aboutsummaryrefslogtreecommitdiffstats
path: root/background_scripts/marks.coffee
blob: 15d41205708b346a48b7fe1cac807736476fcfab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
root = window.Marks = {}

marks = {}

root.create = (req, sender) ->
  marks[req.markName] =
    tabId: sender.tab.id
    scrollX: req.scrollX
    scrollY: req.scrollY

chrome.tabs.onUpdated.addListener (tabId, changeInfo, tab) ->
  if changeInfo.url?
    removeMarksForTab tabId

chrome.tabs.onRemoved.addListener (tabId, removeInfo) ->
  # XXX(jez): what about restored tabs?
  removeMarksForTab tabId

removeMarksForTab = (id) ->
  for markName, mark of marks
    if mark.tabId is id
      delete marks[markName]

root.goto = (req, sender) ->
  mark = marks[req.markName]
  chrome.tabs.update mark.tabId, selected: true
  chrome.tabs.sendMessage mark.tabId,
    name: "setScrollPosition"
    scrollX: mark.scrollX
    scrollY: mark.scrollY
  chrome.tabs.sendMessage mark.tabId,
    name: "showHUDforDuration",
    text: "Jumped to global mark '#{req.markName}'"
    duration: 1000