Improve web request error detection and set badge for updated tabs.

This commit is contained in:
FelisCatus 2015-02-18 11:30:00 +08:00
parent 7d9ab303e3
commit 11749c28fc
2 changed files with 14 additions and 3 deletions

View File

@ -197,16 +197,18 @@ class ChromeOptions extends OmegaTarget.Options
if enabled and not @_requestMonitor?
@_tabRequestInfoPorts = {}
@_requestMonitor = new WebRequestMonitor()
@_requestMonitor.watchTabs (tabId, info, req, event) =>
@_requestMonitor.watchTabs (tabId, info) =>
return unless @_monitorWebRequests
if info.errorCount > 0
info.badgeSet = true
badge = {text: info.errorCount.toString(), color: '#f0ad4e'}
chrome.browserAction.setBadgeText(text: badge.text, tabId: tabId)
chrome.browserAction.setBadgeBackgroundColor(
color: badge.color
tabId: tabId
)
else
else if info.badgeSet
info.badgeSet = false
chrome.browserAction.setBadgeText(text: '', tabId: tabId)
@_tabRequestInfoPorts[tabId]?.postMessage(
@_requestMonitor.summarizeErrors(info, OmegaPac.getBaseDomain))

View File

@ -83,6 +83,9 @@ module.exports = class WebRequestMonitor
return if req.tabId < 0
return if req.error.indexOf('BLOCKED') >= 0
return if req.error.indexOf('net::ERR_FILE_') == 0
return if req.url.indexOf('file:') == 0
return if req.url.indexOf('chrome') == 0
return unless reqInfo
if req.error == 'net::ERR_ABORTED'
if reqInfo.timeoutCalled and not reqInfo.noTimeout
@ -121,6 +124,11 @@ module.exports = class WebRequestMonitor
chrome.tabs.onReplaced?.addListener (added, removed) =>
@tabInfo[added] ?= @_newTabInfo()
delete @tabInfo[removed]
chrome.tabs.onUpdated.addListener (tab) =>
info = @tabInfo[tab.id] ?= @_newTabInfo()
return unless info
for callback in @_tabCallbacks
callback(tab.id, info, null, 'updated')
chrome.tabs.query {}, (tabs) =>
for tab in tabs
@tabInfo[tab.id] ?= @_newTabInfo()
@ -139,7 +147,8 @@ module.exports = class WebRequestMonitor
info = @tabInfo[req.tabId]
if info
if status == 'start' and req.type == 'main_frame'
info = @tabInfo[req.tabId] = @_newTabInfo()
for own key, value of @_newTabInfo()
info[key] = value
info.requests[req.requestId] = req
if (oldStatus = info.requestStatus[req.requestId])
info[@eventCategory[oldStatus] + 'Count']--