Files
sousa-gecko/devtools/client/storage/test/storage-file-url.html
T
Alexandre Poirot f6dd37fcb5 Bug 2044464 - [devtools] Notify the user about Local Mode when loading files via file:// URL. r=devtools-reviewers,fluent-reviewers,bolsson,bomsy,nchevobbe
Move all LocalModeMappings out of toolbox (the local-mode-mappings-updated event).
Also move some logic from options panel to LocalModeMappings
(getNextAvailableOrigin, createNewMapping).

If the file location isn't mapped yet, the notification offers two actions:
* add to settings to permanently add a mapping while highlighting the
  new setting in the options panel, so that the user know where to
  configure it later on.
* try a transient mapping that will be lost once devtools is closed.

In both cases the mapping is automatically loaded.

If the file location is mapped, it offers a navigation button.

In all cases, a "don't show me this again" button is shown to
permanently dismiss all these type of notifications.

Note that there is some smart logic to handle files versus folder,
where we will always map the folder or file's folder. We then
compute the right URL if a file was given.

Differential Revision: https://phabricator.services.mozilla.com/D294238
2026-06-24 04:01:33 +00:00

64 lines
1.7 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Storage Test</title>
<script>
"use strict";
/* exported setup */
async function setup() {
await createIndexedDB();
createCookies();
createLocalStorage();
createSessionStorage();
}
function createIndexedDB() {
const { promise, resolve } = Promise.withResolvers();
const open = indexedDB.open("MyDatabase", 1);
open.onupgradeneeded = function () {
const db = open.result;
db.createObjectStore("MyObjectStore", {keyPath: "id"});
};
open.onsuccess = function () {
const db = open.result;
const tx = db.transaction("MyObjectStore", "readwrite");
const store = tx.objectStore("MyObjectStore");
store.put({id: 12345, name: {first: "John", last: "Doe"}, age: 42});
store.put({id: 54321, name: {first: "Ralph", last: "Wood"}, age: 38});
store.put({id: 67890, name: {first: "Bob", last: "Smith"}, age: 35});
store.put({id: 98765, name: {first: "Freddie", last: "Krueger"}, age: 40});
tx.oncomplete = function () {
db.close();
resolve();
};
};
return promise;
}
function createCookies() {
document.cookie = "test1=Jean Dupond";
document.cookie = "test2=dnopuD naeJ";
}
function createLocalStorage() {
localStorage.setItem("test3", "John Doe");
localStorage.setItem("test4", "eoD nhoJ");
}
function createSessionStorage() {
sessionStorage.setItem("test5", "John Smith");
sessionStorage.setItem("test6", "htimS nhoJ");
}
</script>
</head>
<body>
<h1>IndexedDB Test</h1>
</body>
</html>