diff options
Diffstat (limited to 'background_scripts/main.coffee')
| -rw-r--r-- | background_scripts/main.coffee | 33 | 
1 files changed, 13 insertions, 20 deletions
| diff --git a/background_scripts/main.coffee b/background_scripts/main.coffee index 1a67f2b2..0d82e61c 100644 --- a/background_scripts/main.coffee +++ b/background_scripts/main.coffee @@ -311,24 +311,6 @@ selectTab = (direction, count = 1) ->              Math.max 0, tabs.length - count        chrome.tabs.update tabs[toSelect].id, selected: true -# Here's how we set the page icon.  The default is "disabled", so if we do nothing else, then we get the -# grey-out disabled icon.  Thereafter, we only set tab-specific icons, so there's no need to update the icon -# when we visit a tab on which Vimium isn't running. -# -# For active tabs, when a frame starts, it requests its active state via isEnabledForUrl.  We also check the -# state every time a frame gets the focus.  In both cases, the frame then updates the tab's icon accordingly. -# -# Exclusion rule changes (from either the options page or the page popup) propagate via the subsequent focus -# change.  In particular, whenever a frame next gets the focus, it requests its new state and sets the icon -# accordingly. -# -setIcon = (request, sender) -> -  path = switch request.icon -    when "enabled" then "icons/browser_action_enabled.png" -    when "partial" then "icons/browser_action_partial.png" -    when "disabled" then "icons/browser_action_disabled.png" -  chrome.browserAction.setIcon tabId: sender.tab.id, path: path -  chrome.tabs.onUpdated.addListener (tabId, changeInfo, tab) ->    return unless changeInfo.status == "loading" # only do this once per URL change    cssConf = @@ -373,10 +355,22 @@ Frames =    isEnabledForUrl: ({request, tabId, port}) ->      urlForTab[tabId] = request.url if request.frameIsFocused      rule = Exclusions.getRule request.url -    port.postMessage extend request, +    enabledState =        isEnabledForUrl: not rule or 0 < rule.passKeys.length        passKeys: rule?.passKeys ? "" +    if request.frameIsFocused +      chrome.browserAction.setIcon tabId: tabId, path: +        if not enabledState.isEnabledForUrl +          "icons/browser_action_disabled.png" +        else if 0 < enabledState.passKeys.length +          "icons/browser_action_partial.png" +        else +          "icons/browser_action_enabled.png" + +    # Send the response.  The tests require this to be last. +    port.postMessage extend request, enabledState +    domReady: ({tabId, frameId}) ->      if frameId == 0        tabLoadedHandlers[tabId]?() @@ -423,7 +417,6 @@ sendRequestHandlers =    selectSpecificTab: selectSpecificTab    createMark: Marks.create.bind(Marks)    gotoMark: Marks.goto.bind(Marks) -  setIcon: setIcon    sendMessageToFrames: sendMessageToFrames    log: bgLog    fetchFileContents: (request, sender) -> fetchFileContents request.fileName | 
