Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions injected/entry-points/extension-mv3.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/
import { load, init, update } from '../src/content-scope-features.js';
import { computeLimitedSiteObject } from '../src/utils.js';
import { getSharedMessagingTransport } from '../src/sendmessage-transport.js';

const secret = (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32).toString().replace('0.', '');

Expand Down Expand Up @@ -34,6 +35,16 @@ window.addEventListener(secret, ({ detail: encodedMessage }) => {
init(message.argumentsObject);
}
break;
default:
// Messages with messageType are subscription responses from the extension.
// Route them to the shared transport so all subscribed features receive them.
if (message.messageType) {
const transport = getSharedMessagingTransport();
if (transport?.onResponse) {
transport.onResponse(message);
}
}
break;
}
});

Expand Down
2 changes: 1 addition & 1 deletion injected/src/features.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ export const platformSupport = {
'pageContext',
'duckAiDataClearing',
],
firefox: ['cookie', ...baseFeatures, 'clickToLoad'],
firefox: ['cookie', ...baseFeatures, 'clickToLoad', 'webInterferenceDetection', 'breakageReporting'],
chrome: ['cookie', ...baseFeatures, 'clickToLoad', 'webInterferenceDetection', 'breakageReporting'],
'chrome-mv3': ['cookie', ...baseFeatures, 'clickToLoad', 'webInterferenceDetection', 'breakageReporting'],
integration: [...baseFeatures, ...otherFeatures],
Expand Down
3 changes: 2 additions & 1 deletion injected/src/features/breakage-reporting.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ export default class BreakageReporting extends ContentFeature {
};

// Only run detectors if explicitly configured
const detectorSettings = this.getFeatureSetting('interferenceTypes', 'webInterferenceDetection');
const interferenceTypes = this.getFeatureSetting('interferenceTypes');
const detectorSettings = interferenceTypes?.webInterferenceDetection;
if (detectorSettings) {
result.detectorData = {
botDetection: runBotDetection(detectorSettings.botDetection),
Expand Down
21 changes: 19 additions & 2 deletions injected/src/sendmessage-transport.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,29 @@ import { TestTransportConfig } from '../../messaging/index.js';
* @typedef {import('@duckduckgo/messaging').MessagingTransport} MessagingTransport
*/

/**
* Singleton transport shared across all features. Without this, each feature would
* have its own transport/queue and wouldn't receive messages meant for other features.
* @type {SendMessageMessagingTransport | null}
*/
let sharedTransport = null;

/**
* @deprecated - A temporary constructor for the extension to make the messaging config
*/
export function extensionConstructMessagingConfig() {
const messagingTransport = new SendMessageMessagingTransport();
return new TestTransportConfig(messagingTransport);
if (!sharedTransport) {
sharedTransport = new SendMessageMessagingTransport();
}
return new TestTransportConfig(sharedTransport);
}

/**
* Used by entry-points to route incoming extension messages to onResponse().
* @returns {SendMessageMessagingTransport | null}
*/
export function getSharedMessagingTransport() {
return sharedTransport;
}

/**
Expand Down
Loading