Skip to content

Commit 258da98

Browse files
Release build 11.33.0 [ci release]
1 parent 488f905 commit 258da98

24 files changed

+1111
-164
lines changed

CHANGELOG.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
- Get expanded performance results (#1989)
2-
- build(deps-dev): bump jasmine from 5.10.0 to 5.11.0 (#1984)
1+
- Add breakageReporting to Apple (#1995)
2+
- Implement Duck.ai data clearing feature (#1988)
3+
- build(deps-dev): bump jasmine from 5.11.0 to 5.12.0 (#1992)
4+
- build(deps-dev): bump the eslint group with 2 updates (#1991)

build/android/adsjsContentScope.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,6 +520,7 @@
520520
"duckPlayer",
521521
"duckPlayerNative",
522522
"duckAiListener",
523+
"duckAiDataClearing",
523524
"harmfulApis",
524525
"webCompat",
525526
"windowsPermissionUsage",
@@ -533,11 +534,12 @@
533534
]
534535
);
535536
var platformSupport = {
536-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
537+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
537538
"apple-isolated": [
538539
"duckPlayer",
539540
"duckPlayerNative",
540541
"brokerProtection",
542+
"breakageReporting",
541543
"performanceMetrics",
542544
"clickToLoad",
543545
"messageBridge",
@@ -568,7 +570,8 @@
568570
"messageBridge",
569571
"webCompat",
570572
"pageContext",
571-
"duckAiListener"
573+
"duckAiListener",
574+
"duckAiDataClearing"
572575
],
573576
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
574577
chrome: ["cookie", ...baseFeatures, "clickToLoad"],

build/android/autofillImport.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,6 +2055,7 @@
20552055
"duckPlayer",
20562056
"duckPlayerNative",
20572057
"duckAiListener",
2058+
"duckAiDataClearing",
20582059
"harmfulApis",
20592060
"webCompat",
20602061
"windowsPermissionUsage",
@@ -2068,11 +2069,12 @@
20682069
]
20692070
);
20702071
var platformSupport = {
2071-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
2072+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
20722073
"apple-isolated": [
20732074
"duckPlayer",
20742075
"duckPlayerNative",
20752076
"brokerProtection",
2077+
"breakageReporting",
20762078
"performanceMetrics",
20772079
"clickToLoad",
20782080
"messageBridge",
@@ -2103,7 +2105,8 @@
21032105
"messageBridge",
21042106
"webCompat",
21052107
"pageContext",
2106-
"duckAiListener"
2108+
"duckAiListener",
2109+
"duckAiDataClearing"
21072110
],
21082111
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
21092112
chrome: ["cookie", ...baseFeatures, "clickToLoad"],

build/android/brokerProtection.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2027,6 +2027,7 @@
20272027
"duckPlayer",
20282028
"duckPlayerNative",
20292029
"duckAiListener",
2030+
"duckAiDataClearing",
20302031
"harmfulApis",
20312032
"webCompat",
20322033
"windowsPermissionUsage",
@@ -2040,11 +2041,12 @@
20402041
]
20412042
);
20422043
var platformSupport = {
2043-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
2044+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
20442045
"apple-isolated": [
20452046
"duckPlayer",
20462047
"duckPlayerNative",
20472048
"brokerProtection",
2049+
"breakageReporting",
20482050
"performanceMetrics",
20492051
"clickToLoad",
20502052
"messageBridge",
@@ -2075,7 +2077,8 @@
20752077
"messageBridge",
20762078
"webCompat",
20772079
"pageContext",
2078-
"duckAiListener"
2080+
"duckAiListener",
2081+
"duckAiDataClearing"
20792082
],
20802083
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
20812084
chrome: ["cookie", ...baseFeatures, "clickToLoad"],

build/android/contentScope.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1356,6 +1356,7 @@
13561356
"duckPlayer",
13571357
"duckPlayerNative",
13581358
"duckAiListener",
1359+
"duckAiDataClearing",
13591360
"harmfulApis",
13601361
"webCompat",
13611362
"windowsPermissionUsage",
@@ -1369,11 +1370,12 @@
13691370
]
13701371
);
13711372
var platformSupport = {
1372-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
1373+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
13731374
"apple-isolated": [
13741375
"duckPlayer",
13751376
"duckPlayerNative",
13761377
"brokerProtection",
1378+
"breakageReporting",
13771379
"performanceMetrics",
13781380
"clickToLoad",
13791381
"messageBridge",
@@ -1404,7 +1406,8 @@
14041406
"messageBridge",
14051407
"webCompat",
14061408
"pageContext",
1407-
"duckAiListener"
1409+
"duckAiListener",
1410+
"duckAiDataClearing"
14081411
],
14091412
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
14101413
chrome: ["cookie", ...baseFeatures, "clickToLoad"],

build/apple/contentScope.js

Lines changed: 87 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,6 +1372,7 @@
13721372
"duckPlayer",
13731373
"duckPlayerNative",
13741374
"duckAiListener",
1375+
"duckAiDataClearing",
13751376
"harmfulApis",
13761377
"webCompat",
13771378
"windowsPermissionUsage",
@@ -1385,11 +1386,12 @@
13851386
]
13861387
);
13871388
var platformSupport = {
1388-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
1389+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
13891390
"apple-isolated": [
13901391
"duckPlayer",
13911392
"duckPlayerNative",
13921393
"brokerProtection",
1394+
"breakageReporting",
13931395
"performanceMetrics",
13941396
"clickToLoad",
13951397
"messageBridge",
@@ -1420,7 +1422,8 @@
14201422
"messageBridge",
14211423
"webCompat",
14221424
"pageContext",
1423-
"duckAiListener"
1425+
"duckAiListener",
1426+
"duckAiDataClearing"
14241427
],
14251428
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
14261429
chrome: ["cookie", ...baseFeatures, "clickToLoad"],
@@ -10130,6 +10133,87 @@ ${truncatedWarning}
1013010133
__publicField(_DuckAiPromptTelemetry, "ONE_DAY_MS", 24 * 60 * 60 * 1e3);
1013110134
var DuckAiPromptTelemetry = _DuckAiPromptTelemetry;
1013210135

10136+
// src/features/duck-ai-data-clearing.js
10137+
init_define_import_meta_trackerLookup();
10138+
var DuckAiDataClearing = class extends ContentFeature {
10139+
init() {
10140+
this.messaging.subscribe("duckAiClearData", (_2) => this.clearData());
10141+
}
10142+
async clearData() {
10143+
let success = true;
10144+
const localStorageKeys = this.getFeatureSetting("chatsLocalStorageKeys");
10145+
for (const localStorageKey of localStorageKeys) {
10146+
try {
10147+
this.clearSavedAIChats(localStorageKey);
10148+
} catch (error) {
10149+
success = false;
10150+
this.log.error("Error clearing saved chats:", error);
10151+
}
10152+
}
10153+
const indexDbNameObjectStoreNamePairs = this.getFeatureSetting("chatImagesIndexDbNameObjectStoreNamePairs");
10154+
for (const [indexDbName, objectStoreName] of indexDbNameObjectStoreNamePairs) {
10155+
try {
10156+
await this.clearChatImagesStore(indexDbName, objectStoreName);
10157+
} catch (error) {
10158+
success = false;
10159+
this.log.error("Error clearing saved chat images:", error);
10160+
}
10161+
}
10162+
if (success) {
10163+
this.notify("duckAiClearDataCompleted");
10164+
} else {
10165+
this.notify("duckAiClearDataFailed");
10166+
}
10167+
}
10168+
clearSavedAIChats(localStorageKey) {
10169+
this.log.info(`Clearing '${localStorageKey}'`);
10170+
window.localStorage.removeItem(localStorageKey);
10171+
}
10172+
clearChatImagesStore(indexDbName, objectStoreName) {
10173+
this.log.info(`Clearing '${indexDbName}' object store`);
10174+
return new Promise((resolve, reject) => {
10175+
const request = window.indexedDB.open(indexDbName);
10176+
request.onerror = (event) => {
10177+
this.log.error("Error opening IndexedDB:", event);
10178+
reject(event);
10179+
};
10180+
request.onsuccess = (_2) => {
10181+
const db = request.result;
10182+
if (!db) {
10183+
this.log.error("IndexedDB onsuccess but no db result");
10184+
reject(new Error("No DB result"));
10185+
return;
10186+
}
10187+
if (!db.objectStoreNames.contains(objectStoreName)) {
10188+
this.log.info(`'${objectStoreName}' object store does not exist, nothing to clear`);
10189+
db.close();
10190+
resolve(null);
10191+
return;
10192+
}
10193+
try {
10194+
const transaction = db.transaction([objectStoreName], "readwrite");
10195+
const objectStore = transaction.objectStore(objectStoreName);
10196+
const clearRequest = objectStore.clear();
10197+
clearRequest.onsuccess = () => {
10198+
db.close();
10199+
resolve(null);
10200+
};
10201+
clearRequest.onerror = (err) => {
10202+
this.log.error("Error clearing object store:", err);
10203+
db.close();
10204+
reject(err);
10205+
};
10206+
} catch (err) {
10207+
this.log.error("Exception during IndexedDB clearing:", err);
10208+
db.close();
10209+
reject(err);
10210+
}
10211+
};
10212+
});
10213+
}
10214+
};
10215+
var duck_ai_data_clearing_default = DuckAiDataClearing;
10216+
1013310217
// src/features/page-context.js
1013410218
init_define_import_meta_trackerLookup();
1013510219

@@ -10513,6 +10597,7 @@ ${children}
1051310597
ddg_feature_exceptionHandler: ExceptionHandler,
1051410598
ddg_feature_apiManipulation: ApiManipulation,
1051510599
ddg_feature_duckAiListener: DuckAiListener,
10600+
ddg_feature_duckAiDataClearing: duck_ai_data_clearing_default,
1051610601
ddg_feature_pageContext: PageContext
1051710602
};
1051810603

build/apple/contentScopeIsolated.js

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2061,6 +2061,7 @@
20612061
"duckPlayer",
20622062
"duckPlayerNative",
20632063
"duckAiListener",
2064+
"duckAiDataClearing",
20642065
"harmfulApis",
20652066
"webCompat",
20662067
"windowsPermissionUsage",
@@ -2074,11 +2075,12 @@
20742075
]
20752076
);
20762077
var platformSupport = {
2077-
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "pageContext"],
2078+
apple: ["webCompat", "duckPlayerNative", ...baseFeatures, "duckAiListener", "duckAiDataClearing", "pageContext"],
20782079
"apple-isolated": [
20792080
"duckPlayer",
20802081
"duckPlayerNative",
20812082
"brokerProtection",
2083+
"breakageReporting",
20822084
"performanceMetrics",
20832085
"clickToLoad",
20842086
"messageBridge",
@@ -2109,7 +2111,8 @@
21092111
"messageBridge",
21102112
"webCompat",
21112113
"pageContext",
2112-
"duckAiListener"
2114+
"duckAiListener",
2115+
"duckAiDataClearing"
21132116
],
21142117
firefox: ["cookie", ...baseFeatures, "clickToLoad"],
21152118
chrome: ["cookie", ...baseFeatures, "clickToLoad"],
@@ -12246,7 +12249,7 @@ ul.messages {
1224612249
}
1224712250
};
1224812251

12249-
// src/features/performance-metrics.js
12252+
// src/features/breakage-reporting.js
1225012253
init_define_import_meta_trackerLookup();
1225112254

1225212255
// src/features/breakage-reporting/utils.js
@@ -12343,7 +12346,30 @@ ul.messages {
1234312346
}
1234412347
}
1234512348

12349+
// src/features/breakage-reporting.js
12350+
var BreakageReporting = class extends ContentFeature {
12351+
init() {
12352+
const isExpandedPerformanceMetricsEnabled = this.getFeatureSettingEnabled("expandedPerformanceMetrics", "enabled");
12353+
this.messaging.subscribe("getBreakageReportValues", async () => {
12354+
const jsPerformance = getJsPerformanceMetrics();
12355+
const referrer = document.referrer;
12356+
const result = {
12357+
jsPerformance,
12358+
referrer
12359+
};
12360+
if (isExpandedPerformanceMetricsEnabled) {
12361+
const expandedPerformanceMetrics = await getExpandedPerformanceMetrics();
12362+
if (expandedPerformanceMetrics.success) {
12363+
result.expandedPerformanceMetrics = expandedPerformanceMetrics.metrics;
12364+
}
12365+
}
12366+
this.messaging.notify("breakageReportResult", result);
12367+
});
12368+
}
12369+
};
12370+
1234612371
// src/features/performance-metrics.js
12372+
init_define_import_meta_trackerLookup();
1234712373
var PerformanceMetrics = class extends ContentFeature {
1234812374
init() {
1234912375
this.messaging.subscribe("getVitals", () => {
@@ -12352,16 +12378,25 @@ ul.messages {
1235212378
});
1235312379
if (isBeingFramed()) return;
1235412380
if (this.getFeatureSettingEnabled("expandedPerformanceMetricsOnLoad", "enabled")) {
12355-
this.waitForPageLoad(() => {
12381+
this.waitForAfterPageLoad(() => {
1235612382
this.triggerExpandedPerformanceMetrics();
1235712383
});
1235812384
}
1235912385
}
12360-
waitForPageLoad(callback) {
12386+
waitForNextTask(callback) {
12387+
setTimeout(callback, 0);
12388+
}
12389+
waitForAfterPageLoad(callback) {
1236112390
if (document.readyState === "complete") {
12362-
callback();
12391+
this.waitForNextTask(callback);
1236312392
} else {
12364-
window.addEventListener("load", callback, { once: true });
12393+
window.addEventListener(
12394+
"load",
12395+
() => {
12396+
this.waitForNextTask(callback);
12397+
},
12398+
{ once: true }
12399+
);
1236512400
}
1236612401
}
1236712402
async triggerExpandedPerformanceMetrics() {
@@ -15560,6 +15595,7 @@ ul.messages {
1556015595
ddg_feature_duckPlayer: DuckPlayerFeature,
1556115596
ddg_feature_duckPlayerNative: duck_player_native_default,
1556215597
ddg_feature_brokerProtection: BrokerProtection,
15598+
ddg_feature_breakageReporting: BreakageReporting,
1556315599
ddg_feature_performanceMetrics: PerformanceMetrics,
1556415600
ddg_feature_clickToLoad: ClickToLoad,
1556515601
ddg_feature_messageBridge: message_bridge_default,

0 commit comments

Comments
 (0)