Skip to content

Commit 360b30e

Browse files
committed
Merge branch 'xpcom'
# Conflicts: # install.rdf
2 parents 1a7e2f0 + 3bed802 commit 360b30e

File tree

4 files changed

+132
-69
lines changed

4 files changed

+132
-69
lines changed

chrome.manifest

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
component {265ba61d-8b89-4739-acc6-24df0bf7eb70} components/WebRTCToggle.js
2+
contract @webrtctoggle/startup;1 {265ba61d-8b89-4739-acc6-24df0bf7eb70}
3+
category profile-after-change WebRTCToggle @webrtctoggle/startup;1
4+
15
content webrtc-permissions-ui-toggle chrome/
26
style chrome://global/content/customizeToolbar.xul chrome://webrtc-permissions-ui-toggle/content/button.css
37

chrome/button.js

Lines changed: 0 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -6,89 +6,21 @@ var prefs = null;
66
var observerObj = null;
77
var title = "WebRTC Permissions UI Toggle";
88

9-
Components.utils.import("resource://gre/modules/AddonManager.jsm");
10-
11-
AddonManager.addAddonListener({
12-
onUninstalling: function(addon) {
13-
if (addon.id == "[email protected]") {
14-
Components.classes["@mozilla.org/preferences-service;1"]
15-
.getService(Components.interfaces.nsIPrefService)
16-
.getBranch("media.navigator.permission.")
17-
.setBoolPref("disabled", false);
18-
}
19-
},
20-
onDisabling: function(addon) {
21-
if (addon.id == "[email protected]") {
22-
Components.classes["@mozilla.org/preferences-service;1"]
23-
.getService(Components.interfaces.nsIPrefService)
24-
.getBranch("media.navigator.permission.")
25-
.setBoolPref("disabled", false);
26-
}
27-
}
28-
});
29-
309
this.addEventListener("load", function () {
3110
prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch("media.navigator.permission.");
32-
var thisWindow = this;
3311
var toolbarbutton = document.getElementById("webrtc-permissions-ui-toggle-1");
34-
35-
Components.classes["@mozilla.org/observer-service;1"]
36-
.getService(Components.interfaces.nsIObserverService)
37-
.addObserver({
38-
observe: function (aSubject, aTopic, aData) {
39-
if (aData == "shutdown") {
40-
if (prefs) {
41-
prefs.setBoolPref("disabled", false);
42-
}
43-
}
44-
}
45-
}, "quit-application", false);
4612

4713
observerObj = {
4814
observe: function (aSubject, aTopic, aData) {
4915
if ("nsPref:changed" == aTopic) {
5016
var newValue = aSubject.getBoolPref(aData);
5117

52-
var message = "";
5318
if (newValue) {
5419
toolbarbutton.label = toolbarbutton.tooltipText = "WebRTC Override (On)";
5520
toolbarbutton.classList.add("setting-true");
56-
message = "Automatic WebRTC connection has been turned on. Make sure to turn it off when you're done!\nYou might need to refresh the current page.";
5721
} else {
5822
toolbarbutton.label = toolbarbutton.tooltipText = "WebRTC Override (Off)";
5923
toolbarbutton.classList.remove("setting-true");
60-
message = "Automatic WebRTC connection has been turned off.";
61-
}
62-
63-
var type = Components.classes["@mozilla.org/preferences-service;1"]
64-
.getService(Components.interfaces.nsIPrefService)
65-
.getBranch("extensions.webrtc-permissions-ui-toggle.")
66-
.getCharPref("notify-type");
67-
switch (type) {
68-
case "non-modal":
69-
try {
70-
Components.classes['@mozilla.org/alerts-service;1']
71-
.getService(Components.interfaces.nsIAlertsService)
72-
.showAlertNotification(null, title, message, false, '', null);
73-
} catch (e) {
74-
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
75-
.getService(Components.interfaces.nsIPromptService)
76-
.alert(thisWindow, title, message);
77-
}
78-
break;
79-
case "none":
80-
break;
81-
default:
82-
try {
83-
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
84-
.getService(Components.interfaces.nsIPromptService)
85-
.alert(thisWindow, title, message);
86-
} catch (e) {
87-
Components.classes['@mozilla.org/alerts-service;1']
88-
.getService(Components.interfaces.nsIAlertsService)
89-
.showAlertNotification(null, title, message, false, '', null);
90-
}
91-
break;
9224
}
9325
}
9426
}

components/WebRTCToggle.js

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
/***********************************************************
2+
XPCOM
3+
***********************************************************/
4+
5+
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
6+
Components.utils.import("resource://gre/modules/AddonManager.jsm");
7+
8+
AddonManager.addAddonListener({
9+
onUninstalling: function(addon) {
10+
if (addon.id == "[email protected]") {
11+
Components.classes["@mozilla.org/preferences-service;1"]
12+
.getService(Components.interfaces.nsIPrefService)
13+
.getBranch("media.navigator.permission.")
14+
.setBoolPref("disabled", false);
15+
}
16+
},
17+
onDisabling: function(addon) {
18+
if (addon.id == "[email protected]") {
19+
Components.classes["@mozilla.org/preferences-service;1"]
20+
.getService(Components.interfaces.nsIPrefService)
21+
.getBranch("media.navigator.permission.")
22+
.setBoolPref("disabled", false);
23+
}
24+
},
25+
// If user decides to cancel the disable/uninstall, they can just reactivate the override with the toolbar button.
26+
});
27+
28+
/***********************************************************
29+
class definition
30+
***********************************************************/
31+
32+
//class constructor
33+
function WebRTCToggle() { }
34+
35+
// class definition
36+
WebRTCToggle.prototype = {
37+
38+
// properties required for XPCOM registration:
39+
classDescription: "WebRTC Toggle (WebRTC Permissions UI Override)",
40+
classID: Components.ID("{265ba61d-8b89-4739-acc6-24df0bf7eb70}"),
41+
contractID: "@propfire/startup;1",
42+
QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsIObserver]),
43+
44+
// add to category manager
45+
_xpcom_categories: [{category: "profile-after-change"}],
46+
47+
observe: function(aSubject, aTopic, aData)
48+
{
49+
switch (aTopic)
50+
{
51+
case "profile-after-change":
52+
Components.classes["@mozilla.org/observer-service;1"]
53+
.getService(Components.interfaces.nsIObserverService)
54+
.addObserver(this, "quit-application", false);
55+
56+
Components.classes["@mozilla.org/preferences-service;1"]
57+
.getService(Components.interfaces.nsIPrefService)
58+
.getBranch("media.navigator.permission.")
59+
.addObserver("", this, false);
60+
break;
61+
case "quit-application":
62+
Components.classes["@mozilla.org/preferences-service;1"]
63+
.getService(Components.interfaces.nsIPrefService)
64+
.getBranch("media.navigator.permission.")
65+
.setBoolPref("disabled", false);
66+
break;
67+
case "nsPref:changed":
68+
var title = "WebRTC Permissions UI Toggle";
69+
var newValue = Components.classes["@mozilla.org/preferences-service;1"]
70+
.getService(Components.interfaces.nsIPrefService)
71+
.getBranch("media.navigator.permission.")
72+
.getBoolPref(aData);
73+
74+
var message = "";
75+
if (newValue) {
76+
message = "Automatic WebRTC connection has been turned on. Make sure to turn it off when you're done!\nYou might need to refresh the current page.";
77+
} else {
78+
message = "Automatic WebRTC connection has been turned off.";
79+
}
80+
81+
var type = Components.classes["@mozilla.org/preferences-service;1"]
82+
.getService(Components.interfaces.nsIPrefService)
83+
.getBranch("extensions.webrtc-permissions-ui-toggle.")
84+
.getCharPref("notify-type");
85+
switch (type) {
86+
case "non-modal":
87+
try {
88+
Components.classes['@mozilla.org/alerts-service;1']
89+
.getService(Components.interfaces.nsIAlertsService)
90+
.showAlertNotification(null, title, message, false, '', null);
91+
} catch (e) {
92+
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
93+
.getService(Components.interfaces.nsIPromptService)
94+
.alert(null, title, message);
95+
}
96+
break;
97+
case "none":
98+
break;
99+
default:
100+
try {
101+
Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
102+
.getService(Components.interfaces.nsIPromptService)
103+
.alert(null, title, message);
104+
} catch (e) {
105+
Components.classes['@mozilla.org/alerts-service;1']
106+
.getService(Components.interfaces.nsIAlertsService)
107+
.showAlertNotification(null, title, message, false, '', null);
108+
}
109+
break;
110+
}
111+
break;
112+
default:
113+
throw Components.Exception("Unknown topic: " + aTopic);
114+
}
115+
}
116+
};
117+
118+
var components = [WebRTCToggle];
119+
if (XPCOMUtils.generateNSGetFactory)
120+
{
121+
var NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
122+
}
123+
else
124+
{
125+
var NSGetModule = XPCOMUtils.generateNSGetModule(components);
126+
}
127+

install.rdf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
em:creator="Isaac Schemm"
1212

1313
14-
em:version="1.0.5"
14+
em:version="1.1.0"
1515
em:homepageURL="https://github.com/IsaacSchemm/webrtc-permissions-ui-toggle"
1616

1717
em:iconURL="chrome://webrtc-permissions-ui-toggle/content/icon.png"

0 commit comments

Comments
 (0)