From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../browser/browser_ext_browsingData_formData.js | 175 +++++++++++++++++++++ 1 file changed, 175 insertions(+) create mode 100644 browser/components/extensions/test/browser/browser_ext_browsingData_formData.js (limited to 'browser/components/extensions/test/browser/browser_ext_browsingData_formData.js') diff --git a/browser/components/extensions/test/browser/browser_ext_browsingData_formData.js b/browser/components/extensions/test/browser/browser_ext_browsingData_formData.js new file mode 100644 index 0000000000..06d928b9b1 --- /dev/null +++ b/browser/components/extensions/test/browser/browser_ext_browsingData_formData.js @@ -0,0 +1,175 @@ +/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set sts=2 sw=2 et tw=80: */ +"use strict"; + +ChromeUtils.defineESModuleGetters(this, { + FormHistory: "resource://gre/modules/FormHistory.sys.mjs", + PlacesUtils: "resource://gre/modules/PlacesUtils.sys.mjs", +}); + +const REFERENCE_DATE = Date.now(); + +async function countEntries(fieldname, message, expected) { + let count = await FormHistory.count({ fieldname }); + is(count, expected, message); +} + +async function setupFormHistory() { + async function searchFirstEntry(terms, params) { + return (await FormHistory.search(terms, params))[0]; + } + + // Make sure we've got a clean DB to start with, then add the entries we'll be testing. + await FormHistory.update([ + { op: "remove" }, + { + op: "add", + fieldname: "reference", + value: "reference", + }, + { + op: "add", + fieldname: "10secondsAgo", + value: "10s", + }, + { + op: "add", + fieldname: "10minutesAgo", + value: "10m", + }, + ]); + + // Age the entries to the proper vintage. + let timestamp = PlacesUtils.toPRTime(REFERENCE_DATE); + let result = await searchFirstEntry(["guid"], { fieldname: "reference" }); + await FormHistory.update({ + op: "update", + firstUsed: timestamp, + guid: result.guid, + }); + + timestamp = PlacesUtils.toPRTime(REFERENCE_DATE - 10000); + result = await searchFirstEntry(["guid"], { fieldname: "10secondsAgo" }); + await FormHistory.update({ + op: "update", + firstUsed: timestamp, + guid: result.guid, + }); + + timestamp = PlacesUtils.toPRTime(REFERENCE_DATE - 10000 * 60); + result = await searchFirstEntry(["guid"], { fieldname: "10minutesAgo" }); + await FormHistory.update({ + op: "update", + firstUsed: timestamp, + guid: result.guid, + }); + + // Sanity check. + await countEntries( + "reference", + "Checking for 10minutes form history entry creation", + 1 + ); + await countEntries( + "10secondsAgo", + "Checking for 1hour form history entry creation", + 1 + ); + await countEntries( + "10minutesAgo", + "Checking for 1hour10minutes form history entry creation", + 1 + ); +} + +add_task(async function testFormData() { + function background() { + browser.test.onMessage.addListener(async (msg, options) => { + if (msg == "removeFormData") { + await browser.browsingData.removeFormData(options); + } else { + await browser.browsingData.remove(options, { formData: true }); + } + browser.test.sendMessage("formDataRemoved"); + }); + } + + let extension = ExtensionTestUtils.loadExtension({ + background, + manifest: { + permissions: ["browsingData"], + }, + }); + + async function testRemovalMethod(method) { + // Clear form data with no since value. + await setupFormHistory(); + extension.sendMessage(method, {}); + await extension.awaitMessage("formDataRemoved"); + + await countEntries( + "reference", + "reference form entry should be deleted.", + 0 + ); + await countEntries( + "10secondsAgo", + "10secondsAgo form entry should be deleted.", + 0 + ); + await countEntries( + "10minutesAgo", + "10minutesAgo form entry should be deleted.", + 0 + ); + + // Clear form data with recent since value. + await setupFormHistory(); + extension.sendMessage(method, { since: REFERENCE_DATE }); + await extension.awaitMessage("formDataRemoved"); + + await countEntries( + "reference", + "reference form entry should be deleted.", + 0 + ); + await countEntries( + "10secondsAgo", + "10secondsAgo form entry should still exist.", + 1 + ); + await countEntries( + "10minutesAgo", + "10minutesAgo form entry should still exist.", + 1 + ); + + // Clear form data with old since value. + await setupFormHistory(); + extension.sendMessage(method, { since: REFERENCE_DATE - 1000000 }); + await extension.awaitMessage("formDataRemoved"); + + await countEntries( + "reference", + "reference form entry should be deleted.", + 0 + ); + await countEntries( + "10secondsAgo", + "10secondsAgo form entry should be deleted.", + 0 + ); + await countEntries( + "10minutesAgo", + "10minutesAgo form entry should be deleted.", + 0 + ); + } + + await extension.startup(); + + await testRemovalMethod("removeFormData"); + await testRemovalMethod("remove"); + + await extension.unload(); +}); -- cgit v1.2.3