diff options
| -rw-r--r-- | background_scripts/bg_utils.coffee | 24 | ||||
| -rw-r--r-- | background_scripts/commands.coffee | 8 | ||||
| -rw-r--r-- | background_scripts/main.coffee | 15 | ||||
| -rw-r--r-- | content_scripts/mode_key_handler.coffee | 6 | ||||
| -rw-r--r-- | manifest.json | 2 |
5 files changed, 33 insertions, 22 deletions
diff --git a/background_scripts/bg_utils.coffee b/background_scripts/bg_utils.coffee index ca042686..ea54c900 100644 --- a/background_scripts/bg_utils.coffee +++ b/background_scripts/bg_utils.coffee @@ -53,4 +53,28 @@ class TabRecency BgUtils = tabRecency: new TabRecency() + # Log messages to the extension's logging page, but only if that page is open. + log: do -> + loggingPageUrl = chrome.runtime.getURL "pages/logging.html" + console.log "Vimium logging URL:\n #{loggingPageUrl}" if loggingPageUrl? # Do not output URL for tests. + # For development, it's sometimes useful to automatically launch the logging page on reload. + chrome.windows.create url: loggingPageUrl, focused: false if localStorage.autoLaunchLoggingPage + (message, sender = null) -> + for viewWindow in chrome.extension.getViews {type: "tab"} + if viewWindow.location.pathname == "/pages/logging.html" + # Don't log messages from the logging page itself. We do this check late because most of the time + # it's not needed. + if sender?.url != loggingPageUrl + date = new Date + [hours, minutes, seconds, milliseconds] = + [date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()] + minutes = "0" + minutes if minutes < 10 + seconds = "0" + seconds if seconds < 10 + milliseconds = "00" + milliseconds if milliseconds < 10 + milliseconds = "0" + milliseconds if milliseconds < 100 + dateString = "#{hours}:#{minutes}:#{seconds}.#{milliseconds}" + logElement = viewWindow.document.getElementById "log-text" + logElement.value += "#{dateString}: #{message}\n" + logElement.scrollTop = 2000000000 + root.BgUtils = BgUtils diff --git a/background_scripts/commands.coffee b/background_scripts/commands.coffee index 2e597e32..65d09d68 100644 --- a/background_scripts/commands.coffee +++ b/background_scripts/commands.coffee @@ -20,7 +20,7 @@ Commands = # command passed to it. This is used to implement e.g. "closing of 3 tabs". addCommand: (command, description, options) -> if command of @availableCommands - logMessage? "#{command} is already defined! Check commands.coffee for duplicates." + BgUtils.log "#{command} is already defined! Check commands.coffee for duplicates." return options ||= {} @@ -28,7 +28,7 @@ Commands = mapKeyToCommand: ({ key, command, options }) -> unless @availableCommands[command] - logMessage? "#{command} doesn't exist!" + BgUtils.log "#{command} doesn't exist!" return options ?= {} @@ -57,13 +57,13 @@ Commands = [ _, key, command, optionList... ] = tokens if command? and @availableCommands[command] key = @normalizeKey key - logMessage? "Mapping #{key} to #{command}" + BgUtils.log "Mapping #{key} to #{command}" @mapKeyToCommand { key, command, options: @parseCommandOptions command, optionList } when "unmap" if tokens.length == 2 key = @normalizeKey tokens[1] - logMessage? "Unmapping #{key}" + BgUtils.log "Unmapping #{key}" delete @keyToCommandRegistry[key] when "unmapAll" diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 0d82e61c..5270ef02 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -72,18 +72,6 @@ chrome.runtime.onMessage.addListener((request, sender, sendResponse) -> # Ensure the sendResponse callback is freed. return false) -# Log messages to the extension's logging page, but only if that page is open. -logMessage = do -> - loggingPageUrl = chrome.runtime.getURL "pages/logging.html" - console.log "Vimium logging URL:\n #{loggingPageUrl}" if loggingPageUrl? # Do not output URL for tests. - (message, sender = null) -> - for viewWindow in chrome.extension.getViews {type: "tab"} - if viewWindow.location.pathname == "/pages/logging.html" - # Don't log messages from the logging page itself. We do this check late because most of the time - # it's not needed. - if sender?.url != loggingPageUrl - viewWindow.document.getElementById("log-text").value += "#{(new Date()).toISOString()}: #{message}\n" - # # Used by the content scripts to get their full URL. This is needed for URLs like "view-source:http:# .." # because window.location doesn't know anything about the Chrome-specific "view-source:". @@ -396,7 +384,7 @@ sendMessageToFrames = (request, sender) -> # For debugging only. This allows content scripts to log messages to the extension's logging page. bgLog = (request, sender) -> - logMessage "#{sender.tab.id}/#{request.frameId} #{request.message}", sender + BgUtils.log "#{request.frameId} #{request.message}", sender # Port handler mapping portHandlers = @@ -476,5 +464,4 @@ chrome.runtime.onInstalled.addListener ({reason}) -> chrome.storage.local.set installDate: new Date().toString() root.TabOperations = TabOperations -root.logMessage = logMessage root.Frames = Frames diff --git a/content_scripts/mode_key_handler.coffee b/content_scripts/mode_key_handler.coffee index d06bddb5..bafdfd56 100644 --- a/content_scripts/mode_key_handler.coffee +++ b/content_scripts/mode_key_handler.coffee @@ -20,7 +20,7 @@ class KeyHandlerMode extends Mode # Reset the key state, optionally retaining the count provided. reset: (@countPrefix = 0) -> - bgLog "Clearing key state, set count=#{@countPrefix}." + bgLog "Clearing key state: #{@countPrefix} (#{@name})" @keyState = [@keyMapping] constructor: (options) -> @@ -88,7 +88,7 @@ class KeyHandlerMode extends Mode @countPrefix == 0 and @keyState.length == 1 and keyChar in (@passKeys ? "") handleKeyChar: (keyChar) -> - bgLog "Handling key #{keyChar}, mode=#{@name}." + bgLog "Handle key #{keyChar} (#{@name})" # A count prefix applies only so long a keyChar is mapped in @keyState[0]; e.g. 7gj should be 1j. @countPrefix = 0 unless keyChar of @keyState[0] # Advance the key state. The new key state is the current mappings of keyChar, plus @keyMapping. @@ -96,7 +96,7 @@ class KeyHandlerMode extends Mode command = (mapping for mapping in @keyState when "command" of mapping)[0] if command count = if 0 < @countPrefix then @countPrefix else 1 - bgLog "Calling mode=#{@name}, command=#{command.command}, count=#{count}." + bgLog "Call #{command.command}[#{count}] (#{@mode})" @reset() @commandHandler {command, count} false # Suppress event. diff --git a/manifest.json b/manifest.json index 07647da5..f11b44d9 100644 --- a/manifest.json +++ b/manifest.json @@ -10,9 +10,9 @@ "scripts": [ "lib/utils.js", "lib/settings.js", + "background_scripts/bg_utils.js", "background_scripts/commands.js", "lib/clipboard.js", - "background_scripts/bg_utils.js", "background_scripts/exclusions.js", "background_scripts/completion_engines.js", "background_scripts/completion_search.js", |
