Skip to content

Commit a5e3cf3

Browse files
committed
after release review
1 parent 78f2481 commit a5e3cf3

31 files changed

+656
-636
lines changed

src/api-monitor-cs-isolated.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@ import {
33
windowPost,
44
windowListen,
55
portListen,
6+
EMsg,
67
} from './api/communication.ts';
78
import { getSettings, onSettingsChange } from './api/settings.ts';
89

910
getSettings().then((settings) => {
10-
windowPost({ msg: 'settings', settings: settings });
11+
windowPost({ msg: EMsg.SETTINGS, settings: settings });
1112

1213
onSettingsChange((newValue) => {
13-
windowPost({ msg: 'settings', settings: newValue });
14+
windowPost({ msg: EMsg.SETTINGS, settings: newValue });
1415
});
1516
});
1617

1718
portListen(windowPost);
1819
windowListen(runtimePost);
1920

20-
runtimePost({ msg: 'content-script-loaded' });
21+
runtimePost({ msg: EMsg.CONTENT_SCRIPT_LOADED });

src/api-monitor-cs-main.ts

Lines changed: 30 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,77 +1,62 @@
1-
import { windowListen, windowPost } from './api/communication.ts';
1+
import { EMsg, windowListen, windowPost } from './api/communication.ts';
22
import { IS_DEV } from './api/env.ts';
33
import {
44
TELEMETRY_FREQUENCY_1PS,
55
TELEMETRY_FREQUENCY_30PS,
66
} from './api/const.ts';
77
import { Timer } from './api/time.ts';
88
import {
9-
collectMediaMetrics,
10-
meetMedia,
11-
doMediaCommand,
12-
type TMediaTelemetry,
13-
} from './api/mediaMonitor.ts';
14-
import { Wrapper, type TWrapperMetrics } from './wrapper/Wrapper.ts';
15-
import { panelsArray2Map, type TPanelMap } from './api/settings.ts';
9+
wrapperOnEachSecond as onEachSecond,
10+
setSettings,
11+
cleanHistory,
12+
collectMetrics,
13+
runMediaCommand,
14+
} from './wrapper/Wrapper.ts';
1615
import { ETimerType } from './wrapper/TimerWrapper.ts';
1716

18-
export interface TMetrics {
19-
mediaMetrics: TMediaTelemetry;
20-
wrapperMetrics: TWrapperMetrics;
21-
collectingStartTime: number;
22-
}
23-
24-
let panels: TPanelMap;
25-
let wrapper: Wrapper;
26-
const eachSecond = new Timer({ delay: 1e3, repetitive: true }, () => {
27-
meetMedia(document.querySelectorAll('video,audio'));
28-
wrapper.eachSecond();
29-
});
17+
const eachSecond = new Timer({ delay: 1e3, repetitive: true }, onEachSecond);
3018
const tick = new Timer(
3119
{ delay: TELEMETRY_FREQUENCY_1PS, repetitive: true },
32-
function apiMonitorPostMetric() {
20+
function apiMonitorTelemetryTick() {
3321
const now = Date.now();
3422

3523
windowPost({
36-
msg: 'telemetry',
37-
metrics: {
38-
mediaMetrics: collectMediaMetrics(panels.media.visible),
39-
wrapperMetrics: wrapper.collectMetrics(),
40-
collectingStartTime: now,
41-
},
24+
msg: EMsg.TELEMETRY,
25+
collectingStartTime: now,
26+
telemetry: collectMetrics(),
4227
});
4328
}
4429
);
4530

4631
windowListen((o) => {
47-
if (o.msg === 'settings' && o.settings && typeof o.settings === 'object') {
48-
if (!wrapper) {
49-
wrapper = new Wrapper(panels);
50-
}
51-
panels = panelsArray2Map(o.settings.panels);
52-
wrapper.setup(panels, o.settings);
53-
} else if (o.msg === 'start-observe') {
32+
if (o.msg === EMsg.TELEMETRY_ACKNOWLEDGED) {
33+
// adaptive update-frequency
34+
const ackTrafficDuration = Date.now() - o.timeSent;
35+
const newDelay = (o.trafficDuration + ackTrafficDuration) * 3;
36+
tick.delay = Math.max(TELEMETRY_FREQUENCY_30PS, newDelay);
37+
} else if (
38+
o.msg === EMsg.SETTINGS &&
39+
o.settings &&
40+
typeof o.settings === 'object'
41+
) {
42+
setSettings(o.settings);
43+
} else if (o.msg === EMsg.START_OBSERVE) {
5444
tick.start();
5545
eachSecond.start();
56-
} else if (o.msg === 'stop-observe') {
46+
} else if (o.msg === EMsg.STOP_OBSERVE) {
5747
tick.stop();
5848
eachSecond.stop();
59-
} else if (o.msg === 'reset-wrapper-history') {
60-
wrapper.cleanHistory();
49+
} else if (o.msg === EMsg.RESET_WRAPPER_HISTORY) {
50+
cleanHistory();
6151
!tick.isPending && tick.trigger();
62-
} else if (o.msg === 'clear-timer-handler') {
52+
} else if (o.msg === EMsg.CLEAR_TIMER_HANDLER) {
6353
if (o.type === ETimerType.TIMEOUT) {
6454
window.clearTimeout(o.handler);
6555
} else {
6656
window.clearInterval(o.handler);
6757
}
68-
} else if (o.msg === 'media-command') {
69-
doMediaCommand(o.mediaId, o.cmd, o.property);
70-
} else if (o.msg === 'telemetry-acknowledged') {
71-
// adaptive update-frequency
72-
const ackTrafficDuration = Date.now() - o.timeSent;
73-
const newDelay = (o.trafficDuration + ackTrafficDuration) * 3;
74-
tick.delay = Math.max(TELEMETRY_FREQUENCY_30PS, newDelay);
58+
} else if (o.msg === EMsg.MEDIA_COMMAND) {
59+
runMediaCommand(o.mediaId, o.cmd, o.property);
7560
}
7661
});
7762

src/api-monitor-devtools.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { portPost } from './api/communication.ts';
1+
import { EMsg, portPost } from './api/communication.ts';
22
import { getSettings, setSettings } from './api/settings.ts';
33

44
// tabId may be null if user opened the devtools of the devtools
@@ -11,12 +11,12 @@ if (chrome.devtools.inspectedWindow.tabId !== null) {
1111
panel.onShown.addListener(async () => {
1212
const settings = await getSettings();
1313
if (!settings.paused) {
14-
portPost({ msg: 'start-observe' });
14+
portPost({ msg: EMsg.START_OBSERVE });
1515
}
1616
setSettings({ devtoolsPanelShown: true });
1717
});
1818
panel.onHidden.addListener(() => {
19-
portPost({ msg: 'stop-observe' });
19+
portPost({ msg: EMsg.STOP_OBSERVE });
2020
setSettings({ devtoolsPanelShown: false });
2121
});
2222
}

src/api/communication.ts

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@
1212

1313
import { APPLICATION_NAME } from './env.ts';
1414
import { ERRORS_IGNORED } from './const.ts';
15-
import type { TMetrics } from '../api-monitor-cs-main.ts';
1615
import { ETimerType } from '../wrapper/TimerWrapper.ts';
16+
import type { TTelemetry } from '../wrapper/Wrapper.ts';
1717
import type { TSettings } from './settings.ts';
18+
import type { TMediaCommand } from '../wrapper/MediaWrapper.ts';
1819

1920
let port: chrome.runtime.Port | null = null;
2021
export function portPost(payload: TMsgOptions) {
@@ -95,50 +96,53 @@ function handleRuntimeMessageResponse(): void {
9596
}
9697
}
9798

99+
export enum EMsg {
100+
SETTINGS,
101+
CONTENT_SCRIPT_LOADED,
102+
START_OBSERVE,
103+
STOP_OBSERVE,
104+
TELEMETRY,
105+
TELEMETRY_ACKNOWLEDGED,
106+
MEDIA_COMMAND,
107+
RESET_WRAPPER_HISTORY,
108+
CLEAR_TIMER_HANDLER,
109+
}
110+
98111
export interface TMsgStartObserve {
99-
msg: 'start-observe';
112+
msg: EMsg.START_OBSERVE;
100113
}
101114
export interface TMsgStopObserve {
102-
msg: 'stop-observe';
115+
msg: EMsg.STOP_OBSERVE;
103116
}
104117
export interface TMsgResetHistory {
105-
msg: 'reset-wrapper-history';
118+
msg: EMsg.RESET_WRAPPER_HISTORY;
106119
}
107120
export interface TMsgClearHandler {
108-
msg: 'clear-timer-handler';
121+
msg: EMsg.CLEAR_TIMER_HANDLER;
109122
type: ETimerType;
110123
handler: number;
111124
}
112125
export interface TMsgLoaded {
113-
msg: 'content-script-loaded';
126+
msg: EMsg.CONTENT_SCRIPT_LOADED;
114127
}
115128
export interface TMsgTelemetry {
116-
msg: 'telemetry';
117-
metrics: TMetrics;
129+
msg: EMsg.TELEMETRY;
130+
collectingStartTime: number;
131+
telemetry: TTelemetry;
118132
}
119133
export interface TMsgTelemetryAcknowledged {
120-
msg: 'telemetry-acknowledged';
134+
msg: EMsg.TELEMETRY_ACKNOWLEDGED;
121135
trafficDuration: number;
122136
timeSent: number;
123137
}
124138
export interface TMsgSettings {
125-
msg: 'settings';
139+
msg: EMsg.SETTINGS;
126140
settings: TSettings;
127141
}
128142
export interface TMsgMediaCommand {
129-
msg: 'media-command';
143+
msg: EMsg.MEDIA_COMMAND;
130144
mediaId: string;
131-
cmd:
132-
| 'log'
133-
| 'frame-backward'
134-
| 'frame-forward'
135-
| 'pause'
136-
| 'play'
137-
| 'load'
138-
| 'locate'
139-
| 'toggle-boolean'
140-
| 'slower'
141-
| 'faster';
145+
cmd: TMediaCommand;
142146
property?: keyof HTMLMediaElement;
143147
}
144148
export type TMsgOptions =

0 commit comments

Comments
 (0)