-
Notifications
You must be signed in to change notification settings - Fork 0
/
playEvent.js
93 lines (91 loc) · 6.85 KB
/
playEvent.js
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
function playEvent(browserState, eventI){
if(eventI.eventType=="Created"){
if(!browserState.windows.hasOwnProperty("window"+eventI.windowId)){
browserState.windows["window"+eventI.windowId]={};
browserState.windows["window"+eventI.windowId].id=eventI.windowId;
browserState.windows["window"+eventI.windowId].tabs={};
}else
for(var tabI in browserState.windows["window"+eventI.windowId].tabs)
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index >= eventI.index)
++browserState.windows["window"+eventI.windowId].tabs[tabI].index;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId]={};
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].id=eventI.tabId;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].index=eventI.index;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned=eventI.pinned;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].title=eventI.title;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].url=eventI.url;
}else if(eventI.eventType=="Removed"){
var numTabs=0;
for(var tabI in browserState.windows["window"+eventI.windowId].tabs){
++numTabs;
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index > browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].index)
--browserState.windows["window"+eventI.windowId].tabs[tabI].index;
}
if(numTabs>1)
delete browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId];
else
delete browserState.windows["window"+eventI.windowId];
}else if(eventI.eventType=="Replaced"){
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId]={};
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId].id=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].id;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId].index=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].index;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId].pinned=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId].title=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].title;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.newTabId].url=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].url;
delete browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId];
}else if(eventI.eventType=="Activated"){
browserState.windows["window"+eventI.windowId].activeTab=eventI.tabId;
}else if(eventI.eventType=="Moved"){
if(eventI.fromIndex < eventI.toIndex){
for(var tabI in browserState.windows["window"+eventI.windowId].tabs)
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index > eventI.fromIndex && browserState.windows["window"+eventI.windowId].tabs[tabI].index <= eventI.toIndex)
--browserState.windows["window"+eventI.windowId].tabs[tabI].index;
}else{
for(var tabI in browserState.windows["window"+eventI.windowId].tabs)
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index < eventI.fromIndex && browserState.windows["window"+eventI.windowId].tabs[tabI].index >= eventI.toIndex)
++browserState.windows["window"+eventI.windowId].tabs[tabI].index;
}
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].index=eventI.toIndex
}else if(eventI.eventType=="Pinned"){
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned=true;
}else if(eventI.eventType=="Unpinned"){
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned=false;
}else if(eventI.eventType=="Retitled"){
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].title=eventI.title;
}else if(eventI.eventType=="Navigated"){
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].url=eventI.url;
}else if(eventI.eventType=="Detached"){
var numTabs=0;
for(var tabI in browserState.windows["window"+eventI.windowId].tabs){
++numTabs;
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index > eventI.position)
--browserState.windows["window"+eventI.windowId].tabs[tabI].index;
}
browserState.tabs["tab"+eventI.tabId]={};
browserState.tabs["tab"+eventI.tabId].id=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].id;
browserState.tabs["tab"+eventI.tabId].pinned=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned;
browserState.tabs["tab"+eventI.tabId].title=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].title;
browserState.tabs["tab"+eventI.tabId].url=browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].url;
if(numTabs>1)
delete browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId];
else
delete browserState.windows["window"+eventI.windowId];
}else if(eventI.eventType=="Attached"){
if(browserState.windows.hasOwnProperty("window"+eventI.windowId)){
for(var tabI in browserState.windows["window"+eventI.windowId].tabs)
if(browserState.windows["window"+eventI.windowId].tabs[tabI].index >= eventI.position)
++browserState.windows["window"+eventI.windowId].tabs[tabI].index;
}else{
browserState.windows["window"+eventI.windowId]={};
browserState.windows["window"+eventI.windowId].id=eventI.windowId;
browserState.windows["window"+eventI.windowId].tabs={};
}
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId]={};
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].id=browserState.tabs["tab"+eventI.tabId].id;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].index=eventI.position;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].pinned=browserState.tabs["tab"+eventI.tabId].pinned;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].title=browserState.tabs["tab"+eventI.tabId].title;
browserState.windows["window"+eventI.windowId].tabs["tab"+eventI.tabId].url=browserState.tabs["tab"+eventI.tabId].url;
delete browserState.tabs["tab"+eventI.tabId];
}
}