blinker / firefox.plugin / index.js @ master
History | View | Annotate | Download (14.764 KB)
| 1 | a03cd52e | Thies Pfeiffer | /*
|
|---|---|---|---|
| 2 | 76dd22bd | KevinTaron | * Copyright 2015 Thies Pfeiffer and Dimitri Heil and Kevin Taron
|
| 3 | a03cd52e | Thies Pfeiffer | * Blinker is distributed under the terms of the GNU General Public License
|
| 4 | *
|
||
| 5 | * This file is part of Blinker.
|
||
| 6 | *
|
||
| 7 | * Blinker is free software: you can redistribute it and/or modify
|
||
| 8 | * it under the terms of the GNU General Public License as published by
|
||
| 9 | * the Free Software Foundation, either version 3 of the License, or
|
||
| 10 | * (at your option) any later version.
|
||
| 11 | *
|
||
| 12 | * Blinker is distributed in the hope that it will be useful,
|
||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
| 15 | * GNU General Public License for more details.
|
||
| 16 | *
|
||
| 17 | * You should have received a copy of the GNU General Public License
|
||
| 18 | * along with Blinker. If not, see <http://www.gnu.org/licenses/>.
|
||
| 19 | */
|
||
| 20 | |||
| 21 | 76dd22bd | KevinTaron | |
| 22 | /****************************************
|
||
| 23 | * Imports
|
||
| 24 | ****************************************/
|
||
| 25 | |||
| 26 | var self = require("sdk/self"); |
||
| 27 | a03cd52e | Thies Pfeiffer | var panels = require("sdk/panel"); |
| 28 | 76dd22bd | KevinTaron | var buttons = require('sdk/ui/button/action'); |
| 29 | a03cd52e | Thies Pfeiffer | var tabs = require("sdk/tabs"); |
| 30 | var pageMod = require("sdk/page-mod"); |
||
| 31 | var pageWorker = require("sdk/page-worker"); |
||
| 32 | var settings = require("sdk/simple-prefs"); |
||
| 33 | 76dd22bd | KevinTaron | var localstore = require("sdk/simple-storage"); |
| 34 | var { attach, detach } = require('sdk/content/mod'); |
||
| 35 | var { Style } = require('sdk/stylesheet/style');var about_config = require("sdk/preferences/service"); |
||
| 36 | a03cd52e | Thies Pfeiffer | var array = require("sdk/util/array"); |
| 37 | about_config.set("network.websocket.allowInsecureFromHTTPS", true); |
||
| 38 | |||
| 39 | 76dd22bd | KevinTaron | var activeTABURL = "no"; |
| 40 | a03cd52e | Thies Pfeiffer | var pageModWorkers = [];
|
| 41 | var activeWorker;
|
||
| 42 | 76dd22bd | KevinTaron | var calibrationImage = self.data.url('./images/calib.png'); |
| 43 | var holeImage = self.data.url('./images/hole_200.gif'); |
||
| 44 | a03cd52e | Thies Pfeiffer | var currentPort = null; |
| 45 | |||
| 46 | var arr;
|
||
| 47 | |||
| 48 | 76dd22bd | KevinTaron | var htmlelements = localstore.storage.htmlelements;
|
| 49 | |||
| 50 | if(htmlelements == null) { |
||
| 51 | localstore.storage.htmlelements = {
|
||
| 52 | a : {
|
||
| 53 | "data-gaze" : "true", |
||
| 54 | "data-gaze-type" : "action", |
||
| 55 | "data-gaze-model" : "onscreen" |
||
| 56 | }, |
||
| 57 | button : {
|
||
| 58 | "data-gaze" : "true", |
||
| 59 | "data-gaze-type" : "action", |
||
| 60 | "data-gaze-model" : "onscreen" |
||
| 61 | }, |
||
| 62 | img : {
|
||
| 63 | "data-gaze" : "true", |
||
| 64 | "data-gaze-type" : "action", |
||
| 65 | "data-gaze-model" : "onscreen" |
||
| 66 | }, |
||
| 67 | audio: {
|
||
| 68 | "data-gaze" : "true", |
||
| 69 | "data-gaze-type" : "action", |
||
| 70 | "data-gaze-model" : "onscreen" |
||
| 71 | }, |
||
| 72 | video: {
|
||
| 73 | "data-gaze" : "true", |
||
| 74 | "data-gaze-type" : "action", |
||
| 75 | "data-gaze-model" : "onscreen" |
||
| 76 | }, |
||
| 77 | "input\[type=text\]": {
|
||
| 78 | "data-gaze" : "true", |
||
| 79 | "data-gaze-type" : "text", |
||
| 80 | "data-gaze-model" : "onscreen" |
||
| 81 | }, |
||
| 82 | "input\[type=submit\]": {
|
||
| 83 | "data-gaze" : "true", |
||
| 84 | "data-gaze-type" : "action", |
||
| 85 | "data-gaze-model" : "onscreen" |
||
| 86 | }, |
||
| 87 | "input\[type=reset\]": {
|
||
| 88 | "data-gaze" : "true", |
||
| 89 | "data-gaze-type" : "action", |
||
| 90 | "data-gaze-model" : "onscreen" |
||
| 91 | }, |
||
| 92 | "input\[type=email\]": {
|
||
| 93 | "data-gaze" : "true", |
||
| 94 | "data-gaze-type" : "text", |
||
| 95 | "data-gaze-model" : "onscreen" |
||
| 96 | }, |
||
| 97 | "input\[type=password\]": {
|
||
| 98 | "data-gaze" : "true", |
||
| 99 | "data-gaze-type" : "text", |
||
| 100 | "data-gaze-model" : "onscreen" |
||
| 101 | }, |
||
| 102 | "select": {
|
||
| 103 | "data-gaze" : "true", |
||
| 104 | "data-gaze-type" : "choice", |
||
| 105 | "data-gaze-model" : "onscreen" |
||
| 106 | }, |
||
| 107 | }; |
||
| 108 | htmlelements = localstore.storage.htmlelements; |
||
| 109 | } |
||
| 110 | |||
| 111 | /****************************************
|
||
| 112 | * Base-Settings
|
||
| 113 | ****************************************/
|
||
| 114 | |||
| 115 | tabs.open({
|
||
| 116 | url: self.data.url("tutorial/tutorial-full.html"), |
||
| 117 | inBackground: false, |
||
| 118 | }); |
||
| 119 | |||
| 120 | a03cd52e | Thies Pfeiffer | tabs.open({
|
| 121 | 76dd22bd | KevinTaron | url: self.data.url("home/start.html"), |
| 122 | a03cd52e | Thies Pfeiffer | inBackground: false, |
| 123 | }); |
||
| 124 | |||
| 125 | 76dd22bd | KevinTaron | // tabs.open({
|
| 126 | // url: self.data.url("performancetest/performancetest.html"),
|
||
| 127 | // inBackground: false,
|
||
| 128 | // });
|
||
| 129 | |||
| 130 | // tabs.open({
|
||
| 131 | // url: self.data.url("performancetest/performancetest-comment1.html"),
|
||
| 132 | // inBackground: false,
|
||
| 133 | // });
|
||
| 134 | |||
| 135 | // tabs.open({
|
||
| 136 | // url: self.data.url("tutorial/calibrate.html"),
|
||
| 137 | // inBackground: false,
|
||
| 138 | // });
|
||
| 139 | |||
| 140 | /****************************************
|
||
| 141 | * Settings
|
||
| 142 | ****************************************/
|
||
| 143 | a03cd52e | Thies Pfeiffer | |
| 144 | //initiation of the settings panel button
|
||
| 145 | 76dd22bd | KevinTaron | var button = buttons.ActionButton({
|
| 146 | id: "blickbrowser", |
||
| 147 | label: "BlickBrowser Settings", |
||
| 148 | icon: {
|
||
| 149 | "16": "./images/icons/eye-icon.png", |
||
| 150 | "32": "./images/icons/eye-icon.png", |
||
| 151 | "64": "./images/icons/eye-icon.png" |
||
| 152 | }, |
||
| 153 | onClick: showSettings
|
||
| 154 | }); |
||
| 155 | |||
| 156 | /*
|
||
| 157 | * Is called when the button's state has changed (is it checked or not)
|
||
| 158 | */
|
||
| 159 | function showSettings(state) { |
||
| 160 | panel.port.emit('loadSettings', 'go'); |
||
| 161 | panel.show(); |
||
| 162 | } |
||
| 163 | |||
| 164 | /*
|
||
| 165 | * Initiate the settings panel
|
||
| 166 | */
|
||
| 167 | var panel = panels.Panel({
|
||
| 168 | contentURL: self.data.url("settings/settings.html"), |
||
| 169 | contentScriptFile: [
|
||
| 170 | self.data.url("settings/settingsvariables.js"),
|
||
| 171 | //self.data.url("lib/jquery/jquery-3.1.1.min.js"),
|
||
| 172 | self.data.url("lib/jquery/jquery-2.2.4.min.js"),
|
||
| 173 | // self.data.url("lib/jquery/jquery-1.11.1.js"),
|
||
| 174 | self.data.url("settings/settings.js")
|
||
| 175 | ], |
||
| 176 | position: button,
|
||
| 177 | //width: 400,
|
||
| 178 | height: 700, |
||
| 179 | }); |
||
| 180 | |||
| 181 | /*
|
||
| 182 | * Send all blickbrowsersettings to the settings panel on request
|
||
| 183 | */
|
||
| 184 | panel.port.on('getAllSettings', function() { |
||
| 185 | emitAllPrefs(panel.port); |
||
| 186 | //panel.port.emit('blickBrowserSettings', settings.prefs);
|
||
| 187 | }); |
||
| 188 | |||
| 189 | /*
|
||
| 190 | * Settings have changed from inside the settings panel - adjust them globally
|
||
| 191 | */
|
||
| 192 | panel.port.on("writeSettings", function(settings) { |
||
| 193 | writeSettings(settings); |
||
| 194 | a03cd52e | Thies Pfeiffer | }); |
| 195 | |||
| 196 | /*
|
||
| 197 | 76dd22bd | KevinTaron | * Eyetracker calibration has been toggled from settings panel
|
| 198 | * send request to eyetracker
|
||
| 199 | */
|
||
| 200 | panel.port.on("toggleCalibrate", function(value) { |
||
| 201 | if (settings.prefs.eyeTracker == "eyetribe") { |
||
| 202 | activeWorker.port.emit('startCalibration', 'go'); |
||
| 203 | } |
||
| 204 | }); |
||
| 205 | |||
| 206 | /*
|
||
| 207 | * Calibration check is being called from settings panel - hide the panel and tell the pagemod
|
||
| 208 | */
|
||
| 209 | panel.port.on("toggleCheckCalibration", function(value) { |
||
| 210 | if (settings.prefs.eyeTracker == "eyetribe") { |
||
| 211 | /*tabs.activeTab.reload();*/
|
||
| 212 | panel.hide(); |
||
| 213 | //handleChange();
|
||
| 214 | activeWorker.port.emit('checkCalibration', 'go'); |
||
| 215 | |||
| 216 | } |
||
| 217 | }); |
||
| 218 | |||
| 219 | |||
| 220 | panel.port.on("openTutorial", function(value) { |
||
| 221 | tabs.open({
|
||
| 222 | url: self.data.url("tutorial/tutorial-full.html"), |
||
| 223 | inBackground: false, |
||
| 224 | }); |
||
| 225 | }); |
||
| 226 | |||
| 227 | panel.port.on("openHTMLSettings", function(value) { |
||
| 228 | console.log("OpenSettingsPanel");
|
||
| 229 | tabs.open({
|
||
| 230 | url: self.data.url("settings/html-gaze-attr.html"), |
||
| 231 | inBackground: false, |
||
| 232 | }); |
||
| 233 | }); |
||
| 234 | |||
| 235 | /*
|
||
| 236 | * Emit blickbrowsersettings to the panel
|
||
| 237 | */
|
||
| 238 | panel.port.emit('loadSettings', 'go'); |
||
| 239 | |||
| 240 | |||
| 241 | /*
|
||
| 242 | * Is called when the button's state has changed (is it checked or not)
|
||
| 243 | */
|
||
| 244 | function handleChange(state) { |
||
| 245 | if (state.checked) {
|
||
| 246 | panel.port.emit('loadSettings', 'go'); |
||
| 247 | panel.show(); |
||
| 248 | } |
||
| 249 | } |
||
| 250 | |||
| 251 | /*
|
||
| 252 | * update settings and send them to the active tab
|
||
| 253 | * @set: The settings array (e.g. blickBrowserSettings)
|
||
| 254 | */
|
||
| 255 | function writeSettings(set) { |
||
| 256 | //console.log("writeSettings()");
|
||
| 257 | for (var name in set) { |
||
| 258 | settings.prefs[name] = set [name]; |
||
| 259 | } |
||
| 260 | emitAllPrefs(activeWorker.port); |
||
| 261 | } |
||
| 262 | |||
| 263 | /*
|
||
| 264 | * Update the panel settings button's state when settings panel is being hidden
|
||
| 265 | */
|
||
| 266 | function handleHide() { |
||
| 267 | button.state('window', {
|
||
| 268 | checked: false |
||
| 269 | }); |
||
| 270 | } |
||
| 271 | |||
| 272 | /*
|
||
| 273 | * send all settings to the given port
|
||
| 274 | * @port: The port the settings are sent to (e.g. )
|
||
| 275 | */
|
||
| 276 | function emitAllPrefs(port) { |
||
| 277 | port.emit("blickBrowserSettings", settings.prefs);
|
||
| 278 | } |
||
| 279 | |||
| 280 | /****************************************
|
||
| 281 | * Pageworker
|
||
| 282 | ****************************************/
|
||
| 283 | |||
| 284 | /*
|
||
| 285 | a03cd52e | Thies Pfeiffer | * Initiate pageworker (WebSocketServer-Connector)
|
| 286 | */
|
||
| 287 | var pw = pageWorker.Page({
|
||
| 288 | 76dd22bd | KevinTaron | contentURL: self.data.url("websocket/websocket.html") |
| 289 | a03cd52e | Thies Pfeiffer | }); |
| 290 | |||
| 291 | |||
| 292 | pw.port.on('getEyeTracker', function() { |
||
| 293 | worker.port.emit("EyeTracker", eyeTracker);
|
||
| 294 | }); |
||
| 295 | |||
| 296 | /*
|
||
| 297 | * If pageworker
|
||
| 298 | */
|
||
| 299 | pw.port.on('getAllSettings', function() { |
||
| 300 | emitAllPrefs(worker.port); |
||
| 301 | }); |
||
| 302 | |||
| 303 | /*
|
||
| 304 | * If message with name: 'eyeTrackerData' is received from pageworker, send it to the according listener
|
||
| 305 | * inside the active pagemod
|
||
| 306 | */
|
||
| 307 | pw.port.on('eyeTrackerData', function(message) { |
||
| 308 | //console.log("main.js :: pageMod :: port.on.eyeTrackerData" + ", message: " + message);
|
||
| 309 | if (activeWorker !== undefined) { |
||
| 310 | switch (settings.prefs.eyeTracker) {
|
||
| 311 | case "eyetribe": |
||
| 312 | activeWorker.port.emit('eyeTrackerData', message);
|
||
| 313 | break;
|
||
| 314 | case "smi": |
||
| 315 | activeWorker.port.emit('smiData', message);
|
||
| 316 | break;
|
||
| 317 | case "mygaze": |
||
| 318 | activeWorker.port.emit('myGazeData', message);
|
||
| 319 | break;
|
||
| 320 | default:
|
||
| 321 | break;
|
||
| 322 | } |
||
| 323 | } |
||
| 324 | }); |
||
| 325 | |||
| 326 | |||
| 327 | |||
| 328 | 76dd22bd | KevinTaron | /****************************************
|
| 329 | * PageMod
|
||
| 330 | ****************************************/
|
||
| 331 | a03cd52e | Thies Pfeiffer | |
| 332 | /*
|
||
| 333 | * Initiate pagemod and append listeners
|
||
| 334 | *
|
||
| 335 | */
|
||
| 336 | pageMod.PageMod({
|
||
| 337 | include: ["*", "file://*", "resource://*"], |
||
| 338 | 76dd22bd | KevinTaron | contentScriptFile: [
|
| 339 | // Basic Libs
|
||
| 340 | self.data.url("lib/jquery/jquery-2.2.4.min.js"),
|
||
| 341 | self.data.url("lib/notify.js"),
|
||
| 342 | self.data.url("lib/jquery-ui/jquery-ui.js"),
|
||
| 343 | self.data.url("lib/jquery.knob.js"),
|
||
| 344 | self.data.url("lib/jquery.nearest.js"),
|
||
| 345 | self.data.url("lib/withinViewport.js"),
|
||
| 346 | self.data.url("lib/jquery.withinViewport.js"),
|
||
| 347 | self.data.url("lib/circle-progress.js"),
|
||
| 348 | |||
| 349 | // Eyetracker Configs
|
||
| 350 | self.data.url("eyetracker/eyetribe/eyeTribe.js"),
|
||
| 351 | |||
| 352 | // Custom Scripts
|
||
| 353 | self.data.url("scripts/helpers.js"),
|
||
| 354 | self.data.url("scripts/functions.js"),
|
||
| 355 | self.data.url("scripts/types/types.js"),
|
||
| 356 | self.data.url("scripts/gazePosition.js"),
|
||
| 357 | self.data.url("scripts/emulation.js"),
|
||
| 358 | self.data.url("scripts/myscript.js"),
|
||
| 359 | |||
| 360 | // Models
|
||
| 361 | self.data.url("scripts/models/dwell.js"),
|
||
| 362 | self.data.url("scripts/models/onScreen.js"),
|
||
| 363 | self.data.url("scripts/models/piemenu.js"),
|
||
| 364 | |||
| 365 | // Modules
|
||
| 366 | self.data.url("scripts/text/keyboard.js"),
|
||
| 367 | self.data.url("scripts/text/pieKeyboard.js"),
|
||
| 368 | self.data.url("scripts/modules/piemenuOption.js"),
|
||
| 369 | self.data.url("scripts/modules/onscreenOption.js"),
|
||
| 370 | |||
| 371 | // Actions
|
||
| 372 | self.data.url("scripts/actions/actions.js"),
|
||
| 373 | self.data.url("scripts/actions/multimedia.js"),
|
||
| 374 | |||
| 375 | // Choices
|
||
| 376 | self.data.url("scripts/choices/choice.js"),
|
||
| 377 | self.data.url("scripts/choices/checkbox.js"),
|
||
| 378 | self.data.url("scripts/choices/select.js"),
|
||
| 379 | self.data.url("scripts/choices/radio.js"),
|
||
| 380 | self.data.url("scripts/choices/range.js"),
|
||
| 381 | ], |
||
| 382 | contentStyleFile: [
|
||
| 383 | self.data.url("style/style.css"),
|
||
| 384 | self.data.url("lib/jquery-ui/jquiery-ui.css"),
|
||
| 385 | self.data.url("style/fonts/font-awesome.css"),
|
||
| 386 | |||
| 387 | // Modules
|
||
| 388 | self.data.url("style/text/keyboard.css"),
|
||
| 389 | self.data.url("style/text/piemenukeyboard.css"),
|
||
| 390 | self.data.url("style/modules/piemenu.css"),
|
||
| 391 | self.data.url("style/modules/onscreen.css"),
|
||
| 392 | ], |
||
| 393 | a03cd52e | Thies Pfeiffer | attachTo: ["top"], |
| 394 | onAttach: function(worker) { |
||
| 395 | |||
| 396 | //set global activeworker to current pagemod
|
||
| 397 | activeWorker = worker; |
||
| 398 | |||
| 399 | 76dd22bd | KevinTaron | worker.port.emit("activeEmulation", true); |
| 400 | |||
| 401 | a03cd52e | Thies Pfeiffer | /*
|
| 402 | * if page tab / page is (re)-activated - reset the eyetribes configuration settings and refresh the
|
||
| 403 | * blickBrowserSettings, that might have changed in another tab
|
||
| 404 | */
|
||
| 405 | worker.tab.on('activate', function() { |
||
| 406 | activeWorker = worker; |
||
| 407 | activeWorker.port.emit("initializeEyeTribe", ""); |
||
| 408 | emitAllPrefs(activeWorker.port); |
||
| 409 | }); |
||
| 410 | /*
|
||
| 411 | * if page tab / page is (re)-activated - reset the eyetribes configuration settings and refresh the
|
||
| 412 | * blickBrowserSettings, that might have changed in another tab
|
||
| 413 | */
|
||
| 414 | worker.on('pageshow', function() { |
||
| 415 | activeWorker = worker; |
||
| 416 | activeWorker.port.emit("initializeEyeTribe", ""); |
||
| 417 | array.add(pageModWorkers, this);
|
||
| 418 | emitAllPrefs(activeWorker.port); |
||
| 419 | }); |
||
| 420 | |||
| 421 | /*
|
||
| 422 | * if page tab / page is minimized, remove the actual worker from pagemodworkers
|
||
| 423 | */
|
||
| 424 | worker.on('pagehide', function() { |
||
| 425 | array.remove(pageModWorkers, this);
|
||
| 426 | }); |
||
| 427 | |||
| 428 | /*
|
||
| 429 | * if page tab / page is closed, remove the actual worker from pagemodworkers
|
||
| 430 | */
|
||
| 431 | worker.on('detach', function() { |
||
| 432 | console.log("worker detached.");
|
||
| 433 | array.remove(pageModWorkers, this);
|
||
| 434 | }); |
||
| 435 | |||
| 436 | /*
|
||
| 437 | * ################################################################
|
||
| 438 | * #################### PAGEMOD PORT LISTENERS ####################
|
||
| 439 | * ################################################################
|
||
| 440 | */
|
||
| 441 | |||
| 442 | /*
|
||
| 443 | * Redirect message from pagemod to pageworker
|
||
| 444 | */
|
||
| 445 | worker.port.on("sendToTracker", function(message) { |
||
| 446 | pw.port.emit("toEyetracker", message);
|
||
| 447 | }); |
||
| 448 | |||
| 449 | |||
| 450 | /*
|
||
| 451 | * Set panel button icon color
|
||
| 452 | */
|
||
| 453 | worker.port.on('setIconGreen', function() { |
||
| 454 | 76dd22bd | KevinTaron | button.icon = "./images/icons/eye-icon_green.png";
|
| 455 | a03cd52e | Thies Pfeiffer | }); |
| 456 | worker.port.on('setIconRed', function() { |
||
| 457 | 76dd22bd | KevinTaron | button.icon = "./images/icons/eye-icon_red.png";
|
| 458 | a03cd52e | Thies Pfeiffer | }); |
| 459 | |||
| 460 | |||
| 461 | worker.port.on('blickBrowserMode', function(value) { |
||
| 462 | settings.prefs.blickBrowserMode = value; |
||
| 463 | emitAllPrefs(activeWorker.port); |
||
| 464 | 76dd22bd | KevinTaron | }); |
| 465 | |||
| 466 | worker.port.on('openHomepage', function() { |
||
| 467 | tabs.open({
|
||
| 468 | url: self.data.url("home/start.html"), |
||
| 469 | inBackground: false, |
||
| 470 | }); |
||
| 471 | a03cd52e | Thies Pfeiffer | }); |
| 472 | |||
| 473 | /*
|
||
| 474 | * Settings have changed from inside the pagemod - adjust them globally
|
||
| 475 | */
|
||
| 476 | worker.port.on("writeSettings", function(settings) { |
||
| 477 | writeSettings(settings); |
||
| 478 | }); |
||
| 479 | |||
| 480 | /*
|
||
| 481 | * ################################################################
|
||
| 482 | * #################### PAGEMOD PORT EMITTERS #####################
|
||
| 483 | * ################################################################
|
||
| 484 | */
|
||
| 485 | |||
| 486 | /*
|
||
| 487 | * Send calibration image file to pagemod
|
||
| 488 | */
|
||
| 489 | worker.port.emit("calibrationImage", calibrationImage);
|
||
| 490 | |||
| 491 | /*
|
||
| 492 | * Send privacy image file to pagemod
|
||
| 493 | */
|
||
| 494 | worker.port.emit("holeImage", holeImage);
|
||
| 495 | |||
| 496 | |||
| 497 | } |
||
| 498 | }); |
||
| 499 | |||
| 500 | 76dd22bd | KevinTaron | pageMod.PageMod({
|
| 501 | include: ["*", "file://*", "resource://*"], |
||
| 502 | contentScriptFile: [
|
||
| 503 | // Basic Libs
|
||
| 504 | self.data.url("lib/jquery/jquery-2.2.4.min.js"),
|
||
| 505 | // Custom Scripts
|
||
| 506 | self.data.url("scripts/htmlElements.js"),
|
||
| 507 | ], |
||
| 508 | onAttach: function(worker) { |
||
| 509 | worker.port.emit("getElements", htmlelements);
|
||
| 510 | } |
||
| 511 | a03cd52e | Thies Pfeiffer | }); |
| 512 | |||
| 513 | |||
| 514 | 76dd22bd | KevinTaron | pageMod.PageMod({
|
| 515 | include: ["resource://*"], |
||
| 516 | contentScriptFile: [
|
||
| 517 | // Basic Libs
|
||
| 518 | self.data.url("lib/jquery/jquery-2.2.4.min.js"),
|
||
| 519 | self.data.url("lib/notify.js"),
|
||
| 520 | // Custom Scripts
|
||
| 521 | self.data.url("settings/html-gaze-attr.js"),
|
||
| 522 | ], |
||
| 523 | onAttach: function(worker) { |
||
| 524 | worker.port.emit("getElements", htmlelements);
|
||
| 525 | |||
| 526 | worker.port.on("setElements", function(value) { |
||
| 527 | htmlelements = value; |
||
| 528 | localstore.storage.htmlelements = value; |
||
| 529 | a03cd52e | Thies Pfeiffer | }); |
| 530 | |||
| 531 | 76dd22bd | KevinTaron | worker.port.on("docChange", function() { |
| 532 | worker.port.emit("getElements", htmlelements);
|
||
| 533 | }); |
||
| 534 | } |
||
| 535 | }); |