Skip to content

Commit cf6320f

Browse files
authored
interface-based (#1692)
1 parent 7291807 commit cf6320f

File tree

9 files changed

+313
-307
lines changed

9 files changed

+313
-307
lines changed

injected/src/features/duck-player-native.js

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import ContentFeature from '../content-feature.js';
22
import { isBeingFramed } from '../utils.js';
33
import { DuckPlayerNativeMessages } from './duckplayer-native/messages.js';
4-
import { setupDuckPlayerForNoCookie, setupDuckPlayerForSerp, setupDuckPlayerForYouTube } from './duckplayer-native/duckplayer-native.js';
4+
import { setupDuckPlayerForNoCookie, setupDuckPlayerForSerp, setupDuckPlayerForYouTube } from './duckplayer-native/sub-feature.js';
55
import { Environment } from './duckplayer/environment.js';
6+
import { Logger } from './duckplayer/util.js';
67

78
/**
8-
* @import {DuckPlayerNativePage} from './duckplayer-native/duckplayer-native.js'
9+
* @import {DuckPlayerNativeSubFeature} from './duckplayer-native/sub-feature.js'
910
* @import {DuckPlayerNativeSettings} from '@duckduckgo/privacy-configuration/schema/features/duckplayer-native.js'
1011
* @import {UrlChangeSettings} from './duckplayer-native/messages.js'
1112
*/
@@ -72,9 +73,14 @@ export class DuckPlayerNativeFeature extends ContentFeature {
7273
* @param {DuckPlayerNativeMessages} messages
7374
*/
7475
urlChanged(pageType, selectors, playbackPaused, env, messages) {
75-
/** @type {DuckPlayerNativePage | null} */
76+
/** @type {DuckPlayerNativeSubFeature | null} */
7677
let nextPage = null;
7778

79+
const logger = new Logger({
80+
id: 'DUCK_PLAYER_NATIVE',
81+
shouldLog: () => env.isTestMode(),
82+
});
83+
7884
switch (pageType) {
7985
case 'NOCOOKIE':
8086
nextPage = setupDuckPlayerForNoCookie(selectors, env, messages);
@@ -83,7 +89,7 @@ export class DuckPlayerNativeFeature extends ContentFeature {
8389
nextPage = setupDuckPlayerForYouTube(selectors, playbackPaused, env, messages);
8490
break;
8591
case 'SERP':
86-
nextPage = setupDuckPlayerForSerp(selectors, env, messages);
92+
nextPage = setupDuckPlayerForSerp();
8793
break;
8894
case 'UNKNOWN':
8995
default:
@@ -95,8 +101,21 @@ export class DuckPlayerNativeFeature extends ContentFeature {
95101
}
96102

97103
if (nextPage) {
98-
nextPage.init();
99-
this.currentPage = nextPage;
104+
logger.log('Running init handlers');
105+
nextPage.onInit();
106+
107+
if (document.readyState === 'loading') {
108+
const loadHandler = () => {
109+
logger.log('Running deferred load handlers');
110+
nextPage.onLoad();
111+
messages.notifyScriptIsReady();
112+
};
113+
document.addEventListener('DOMContentLoaded', loadHandler, { once: true });
114+
} else {
115+
logger.log('Running load handlers immediately');
116+
nextPage.onLoad();
117+
messages.notifyScriptIsReady();
118+
}
100119
}
101120
}
102121
}

injected/src/features/duckplayer-native/duckplayer-native.js

Lines changed: 0 additions & 272 deletions
This file was deleted.

injected/src/features/duckplayer-native/get-current-timestamp.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
/** @import { DuckPlayerNativeSelectors } from './duckplayer-native.js'; */
1+
/**
2+
* @import { DuckPlayerNativeSelectors } from './sub-feature.js';
3+
*/
24

35
/**
46
* @param {string} selector - Selector for the video element

injected/src/features/duckplayer-native/serp-notify.js

Lines changed: 0 additions & 15 deletions
This file was deleted.

0 commit comments

Comments
 (0)