]> git.wh0rd.org - chrome-ext/web-power-switch.git/blobdiff - options.js
convert to using dynamic runtime chrome.permissions API
[chrome-ext/web-power-switch.git] / options.js
index 3464826d014e1819c1004ce991a3bed3f350fd26..b017cd8087c240d7aaf1d1f4e7f0d21f66fca40e 100644 (file)
@@ -1,17 +1,54 @@
 // Written by Mike Frysinger <vapier@gmail.com>.  Released into the public domain.  Suck it.
 
 function update_settings() {
-       var setting = {};
-       setting[this.id] = this.value;
-       storage.set(setting);
+       var url = document.getElementById('url').value + '/*';
+       var msg = document.getElementById('msg');
+
+       console.log('requesting access to', url);
+       chrome.permissions.request({
+               origins: [url]
+       }, function(granted) {
+               if (granted) {
+                       msg.innerText = 'Saved!';
+
+                       // Sync all of the settings to storage first.
+                       var settings = {}
+                       settings_keys.forEach(function(key) {
+                               var field = document.getElementById(key);
+                               settings[field.id] = field.value;
+                       });
+                       storage.set(settings);
+
+                       // Then revoke existing perms that the user gave us.
+                       chrome.permissions.getAll(function(perms) {
+                               perms.origins.forEach(function(key) {
+                                       if (key == url)
+                                               return;
+
+                                       console.log('revoking access to', key);
+                                       chrome.permissions.remove({
+                                               origins: [key],
+                                       });
+                               });
+                       });
+               } else {
+                       msg.innerText = 'You must grant permission in order to save!';
+               }
+       });
+
+       msg.timeout = setTimeout(function() {
+               msg.innerText = '';
+       }, 5000);
 }
 
 window.onload = function() {
        storage.get(settings_keys, function(settings) {
+               var field = document.getElementById('save');
+               field.onclick = update_settings;
+
                settings_keys.forEach(function(key) {
                        var field = document.getElementById(key);
                        field.value = settings[key] || settings_defaults[key];
-                       field.oninput = update_settings;
                });
        });
 };