aboutsummaryrefslogtreecommitdiffstats
path: root/extension/background.js
diff options
context:
space:
mode:
Diffstat (limited to 'extension/background.js')
-rw-r--r--extension/background.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/extension/background.js b/extension/background.js
index 0bf5808..0d3186b 100644
--- a/extension/background.js
+++ b/extension/background.js
@@ -74,6 +74,28 @@ const router = {
* }
* },
*/
+ "by-title": {
+ async readdir() {
+ const tabs = await queryTabs();
+ return tabs.map(tab => sanitize(String(tab.title)) + "_" + String(tab.id));
+ },
+ "*": {
+ async getattr(path) {
+ const st_size = (await this.readlink(path)).length + 1;
+ return {
+ st_mode: unix.S_IFLNK | 0444,
+ st_nlink: 1,
+ // You _must_ return correct linkee path length from getattr!
+ st_size
+ };
+ },
+ async readlink(path) {
+ const parts = path.split("_");
+ const id = parts[parts.length - 1];
+ return "../by-id/" + id;
+ }
+ }
+ },
"by-id": {
async readdir() {
const tabs = await queryTabs();
@@ -190,6 +212,10 @@ async function read(path, fh, size, offset) {
let route = findRoute(path);
if (route.read) return route.read(path, fh, size, offset);
}
+async function readlink(path) {
+ let route = findRoute(path);
+ if (route.readlink) return route.readlink(path);
+}
async function release(path, fh) {
let route = findRoute(path);
@@ -248,6 +274,13 @@ async function onmessage(event) {
op: 'release'
};
+ } else if (req.op === 'readlink') {
+ const buf = await readlink(req.path)
+ response = {
+ op: 'readlink',
+ buf
+ };
+
} else if (req.op === 'opendir') {
response = {
op: 'opendir',