aboutsummaryrefslogtreecommitdiff
path: root/content/activity_info_server.js
diff options
context:
space:
mode:
Diffstat (limited to 'content/activity_info_server.js')
-rw-r--r--content/activity_info_server.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/content/activity_info_server.js b/content/activity_info_server.js
new file mode 100644
index 0000000..8435377
--- /dev/null
+++ b/content/activity_info_server.js
@@ -0,0 +1,60 @@
+/**
+ * part of Hachette
+ * Informing about activities performed by content script (script injection,
+ * script blocking).
+ *
+ * Copyright (C) 2021 Wojtek Kosior
+ * Redistribution terms are gathered in the `copyright' file.
+ */
+
+/*
+ * IMPORTS_START
+ * IMPORT listen_for_connection
+ * IMPORT CONNECTION_TYPE
+ * IMPORTS_END
+ */
+
+var activities = [];
+var ports = new Set();
+
+function report_activity(name, data)
+{
+ const activity = [name, data];
+ activities.push(activity);
+
+ for (const port of ports)
+ port.postMessage(activity);
+}
+
+function report_script(script_data)
+{
+ report_activity("script", script_data);
+}
+
+function report_settings(settings)
+{
+ report_activity("settings", settings);
+}
+
+function new_connection(port)
+{
+ console.log("new activity info connection!");
+
+ ports.add(port);
+
+ for (const activity of activities)
+ port.postMessage(activity);
+}
+
+function start_activity_info_server()
+{
+ listen_for_connection(CONNECTION_TYPE.ACTIVITY_INFO, new_connection);
+}
+
+/*
+ * EXPORTS_START
+ * EXPORT start_activity_info_server
+ * EXPORT report_script
+ * EXPORT report_settings
+ * EXPORTS_END
+ */