Are you sure about DOM storage. It is my understanding - and I have
made use of it myself using JavaScript - that DOM storage is kept in an
sqlite database file in the profile root -> webappsstore.sqlite.
Still totally baffled. My web searches have produced no information,
yet there it is - data stored by web sites I have visited - and it does
not appear to be DOM storage.
Here is the structure of one of the sqlite databases - nine separate
TABLES and a couple of TRIGGERS. This is not DOM storage. DOM storage
is simple key=value pairs, not a complex structure like this.
sqlite> .schema
CREATE TABLE database (name TEXT NOT NULL, version INTEGER NOT NULL
DEFAULT 0);
CREATE TABLE object_store (id INTEGER PRIMARY KEY, auto_increment
INTEGER NOT NULL DEFAULT 0, name TEXT NOT NULL, key_path TEXT, UNIQUE
(name));
CREATE TABLE object_data (id INTEGER PRIMARY KEY, object_store_id
INTEGER NOT NULL, key_value BLOB DEFAULT NULL, file_ids TEXT, data BLOB
NOT NULL, UNIQUE (object_store_id, key_value), FOREIGN KEY
(object_store_id) REFERENCES object_store(id) ON DELETE CASCADE);
CREATE TABLE object_store_index (id INTEGER PRIMARY KEY, object_store_id
INTEGER NOT NULL, name TEXT NOT NULL, key_path TEXT NOT NULL,
unique_index INTEGER NOT NULL, multientry INTEGER NOT NULL, UNIQUE
(object_store_id, name), FOREIGN KEY (object_store_id) REFERENCES
object_store(id) ON DELETE CASCADE);
CREATE TABLE index_data (index_id INTEGER NOT NULL, value BLOB NOT NULL,
object_data_key BLOB NOT NULL, object_data_id INTEGER NOT NULL, PRIMARY
KEY (index_id, value, object_data_key), FOREIGN KEY (index_id)
REFERENCES object_store_index(id) ON DELETE CASCADE, FOREIGN KEY
(object_data_id) REFERENCES object_data(id) ON DELETE CASCADE);
CREATE INDEX index_data_object_data_id_index ON index_data (object_data_id);
CREATE TABLE unique_index_data (index_id INTEGER NOT NULL, value BLOB
NOT NULL, object_data_key BLOB NOT NULL, object_data_id INTEGER NOT
NULL, PRIMARY KEY (index_id, value, object_data_key), UNIQUE (index_id,
value), FOREIGN KEY (index_id) REFERENCES object_store_index(id) ON
DELETE CASCADE FOREIGN KEY (object_data_id) REFERENCES object_data(id)
ON DELETE CASCADE);
CREATE INDEX unique_index_data_object_data_id_index ON unique_index_data
(object_data_id);
CREATE TABLE file (id INTEGER PRIMARY KEY, refcount INTEGER NOT NULL);
CREATE TRIGGER object_data_insert_trigger AFTER INSERT ON object_data
FOR EACH ROW WHEN NEW.file_ids IS NOT NULL BEGIN SELECT
update_refcount(NULL, NEW.file_ids); END;
CREATE TRIGGER object_data_update_trigger AFTER UPDATE OF file_ids ON
object_data FOR EACH ROW WHEN OLD.file_ids IS NOT NULL OR NEW.file_ids
IS NOT NULL BEGIN SELECT update_refcount(OLD.file_ids, NEW.file_ids); END;
CREATE TRIGGER object_data_delete_trigger AFTER DELETE ON object_data
FOR EACH ROW WHEN OLD.file_ids IS NOT NULL BEGIN SELECT
update_refcount(OLD.file_ids, NULL); END;
CREATE TRIGGER file_update_trigger AFTER UPDATE ON file FOR EACH ROW
WHEN NEW.refcount = 0 BEGIN DELETE FROM file WHERE id = OLD.id; END;