Skip to content
This repository has been archived by the owner on Dec 4, 2017. It is now read-only.

Commit

Permalink
Merge pull request mozilla#51 from fqueze/work-offline
Browse files Browse the repository at this point in the history
Improvements to make the demo usable without internet connection (eg. ad hoc wifi)
  • Loading branch information
Standard8 committed Feb 14, 2013
2 parents 1ee7c3a + 1f7f42a commit 31de95b
Show file tree
Hide file tree
Showing 16 changed files with 128 additions and 39 deletions.
14 changes: 9 additions & 5 deletions addon/Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
VERSION = 0.10

all:
rm ../static/webrtc.xpi
zip ../static/webrtc.xpi bootstrap.js chrome.manifest install.rdf \
sed "s/@VERSION@/$(VERSION)/" < install.rdf.in > install.rdf
zip ../static/webrtc.xpi bootstrap.js options.xul chrome.manifest install.rdf \
styles/*.css
@echo "Did you remember to update the version in install.rdf?"
@echo "Don't forget to update ../static/update.rdf!"
@echo "sha256 sum is:"
shasum -a 256 ../static/webrtc.xpi
sed "s/@VERSION@/$(VERSION)/; \
s/@SHA256@/"`shasum -a 256 ../static/webrtc.xpi |cut -f1 -d' '`"/" \
< update.rdf.in > ../static/update.rdf
@echo
@echo "Did you remember to update the version number in Makefile?"
59 changes: 41 additions & 18 deletions addon/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const kSidebarPage = "/sidebar.htm";
const kSiteImageLocation = "/icon.png";
const kPrefName = "social.manifest.webrtc-demo";
const kUserImageLocation = "/icon.png";
const kWrappsSiteURLPref = "addons.wrapps.siteURL";

const BOOTSTRAP_REASONS = {
APP_STARTUP : 1,
Expand Down Expand Up @@ -68,6 +69,11 @@ let webrtcbrowser = {
currentBrowser.attachFormFill = function() {};

let tab = gBrowser.loadOneTab("about:blank", null, null, null, false);
if (currentBrowser.socialErrorListener) {
// Removing socialErrorListener fails after the docshells have been swapped.
currentBrowser.socialErrorListener.remove();
currentBrowser.socialErrorListener = {remove: function() {}};
}
gBrowser.swapNewTabWithBrowser(tab, currentBrowser);
this.selectedChat.close();
aEvent.preventDefault(); // This lets the emitter of the event know it's been handled.
Expand Down Expand Up @@ -205,10 +211,14 @@ function startup(data, reason) {
webrtcbrowser.init();
break;
}
Services.prefs.addObserver(kWrappsSiteURLPref, prefChangeListener, false);

}

function shutdown(data, reason) {
webrtcbrowser.uninit();
Services.prefs.removeObserver(kWrappsSiteURLPref, prefChangeListener);

/*
switch(reason) {
case BOOTSTRAP_REASONS.APP_SHUTDOWN:
Expand All @@ -222,29 +232,42 @@ function shutdown(data, reason) {
*/
}

function setDefaultProvider(aSiteURL) {
Services.prefs.setCharPref(kPrefName, '{"location":"' + aSiteURL + '/manifest.json","name":"' + kSiteName + '","iconURL":"' + aSiteURL + kSiteImageLocation + '","workerURL":"' + aSiteURL + '/worker.js","sidebarURL":"' + aSiteURL + kSidebarPage + '","origin":"' + aSiteURL + '","enabled":true,"last_modified":135101330568}');
var activeProviders;
try {
activeProviders = JSON.parse(Services.prefs.getCharPref("social.activeProviders"));
} catch (x) {
activeProviders = {};
}

activeProviders[aSiteURL] = 1;
Services.prefs.setCharPref("social.activeProviders", JSON.stringify(activeProviders));
Services.prefs.setCharPref("social.provider.current", aSiteURL);

Services.prefs.setBoolPref("media.navigator.enabled", true);
Services.prefs.setBoolPref("media.navigator.permission.disabled", true);
Services.prefs.setBoolPref("media.peerconnection.enabled", true);
Services.prefs.setBoolPref("dom.disable_open_during_load", false);
Services.prefs.setBoolPref("social.enabled", true);
}

function prefChangeListener(aSubject, aTopic, aData) {
setDefaultProvider(Services.prefs.getCharPref(kWrappsSiteURLPref));
}

function install(data, reason) {
switch(reason) {
case BOOTSTRAP_REASONS.ADDON_INSTALL:
case BOOTSTRAP_REASONS.ADDON_UPGRADE:
case BOOTSTRAP_REASONS.ADDON_DOWNGRADE:
{
Services.prefs.setCharPref(kPrefName, '{"location":"' + kSiteURL + '/manifest.json","name":"' + kSiteName + '","iconURL":"' + kSiteURL + kSiteImageLocation + '","workerURL":"' + kSiteURL + '/worker.js","sidebarURL":"' + kSiteURL + kSidebarPage + '","origin":"' + kSiteURL + '","enabled":true,"last_modified":135101330568}');
Services.prefs.setCharPref("social.provider.current", kSiteURL);
var activeProviders;
try {
activeProviders = JSON.parse(Services.prefs.getCharPref("social.activeProviders"));
} catch (x) {
activeProviders = {};
}

activeProviders[kSiteURL] = 1;
Services.prefs.setCharPref("social.activeProviders", JSON.stringify(activeProviders));

Services.prefs.setBoolPref("media.navigator.enabled", true);
Services.prefs.setBoolPref("media.navigator.permission.disabled", true);
Services.prefs.setBoolPref("media.peerconnection.enabled", true);
Services.prefs.setBoolPref("dom.disable_open_during_load", false);
Services.prefs.setBoolPref("social.enabled", true);
var siteURL = kSiteURL;
if (Services.prefs.prefHasUserValue(kWrappsSiteURLPref))
siteURL = Services.prefs.getCharPref(kWrappsSiteURLPref);
else
Services.prefs.setCharPref(kWrappsSiteURLPref, siteURL);
setDefaultProvider(siteURL);

webrtcbrowser.init();
break;
Expand All @@ -267,7 +290,7 @@ function uninstall(data, reason) {
var activeProviders;
try {
activeProviders = JSON.parse(Services.prefs.getCharPref("social.activeProviders"));
delete activeProviders[kSiteURL];
delete activeProviders[Services.prefs.getCharPref(kWrappsSiteURLPref)];
Services.prefs.setCharPref("social.activeProviders", JSON.stringify(activeProviders));
} catch (x) {
activeProviders = {};
Expand Down
3 changes: 1 addition & 2 deletions addon/install.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id>
<em:name>WebRTC Demo Improvements</em:name>
<em:version>0.9</em:version>
<em:version>0.10</em:version>
<em:description>Adds default variables for webrtc and some extra features</em:description>
<em:bootstrap>true</em:bootstrap>
<em:updateURL>https://webrtc-demo.vcap.mozillalabs.com/update.rdf</em:updateURL>
Expand All @@ -17,4 +17,3 @@
</em:targetApplication>
</Description>
</RDF>

19 changes: 19 additions & 0 deletions addon/install.rdf.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0"?>
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<Description about="urn:mozilla:install-manifest">
<em:id>[email protected]</em:id>
<em:name>WebRTC Demo Improvements</em:name>
<em:version>@VERSION@</em:version>
<em:description>Adds default variables for webrtc and some extra features</em:description>
<em:bootstrap>true</em:bootstrap>
<em:updateURL>https://webrtc-demo.vcap.mozillalabs.com/update.rdf</em:updateURL>
<!-- Firefox -->
<em:targetApplication>
<Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>20.0a1</em:minVersion>
<em:maxVersion>21.0a1</em:maxVersion>
</Description>
</em:targetApplication>
</Description>
</RDF>
4 changes: 4 additions & 0 deletions addon/options.xul
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<?xml version="1.0" ?>
<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<setting pref="addons.wrapps.siteURL" type="string" title="Demo site URL"/>
</vbox>
25 changes: 25 additions & 0 deletions addon/update.rdf.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>

<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
<RDF:Description about="urn:mozilla:extension:[email protected]">
<em:updates>
<RDF:Seq>
<RDF:li resource="urn:mozilla:extension:[email protected]:0.7"/>
</RDF:Seq>
</em:updates>
</RDF:Description>
<RDF:Description about="urn:mozilla:extension:[email protected]:0.7">
<em:version>@VERSION@</em:version>
<em:targetApplication>
<RDF:Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>20.0a1</em:minVersion>
<em:maxVersion>21.0a1</em:maxVersion>
<em:updateLink>https://webrtc-demo.vcap.mozillalabs.com/webrtc.xpi</em:updateLink>
<em:updateInfoURL>https://webrtc-demo.vcap.mozillalabs.com/update.txt</em:updateInfoURL>
<em:updateHash>sha256:@SHA256@</em:updateHash>
</RDF:Description>
</em:targetApplication>
</RDF:Description>
</RDF:RDF>
10 changes: 8 additions & 2 deletions static/checks.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ var webrtcChecks = {
if (!navigator.mozGetUserMedia)
return false;
try {
var dummy = new window.mozRTCPeerConnection()
var dummy = new window.mozRTCPeerConnection({iceServers: []});
} catch (x) {
return false;
}
Expand All @@ -24,8 +24,14 @@ var webrtcChecks = {
},

checkSidebarSupport: function webrtc_checkSidebarSupport() {
if (!this.hasWebRTC() || !this.hasBrowserId())
if (!this.hasWebRTC())
this.displaySidebarWarning();

if (!this.hasBrowserId()) {
webrtcMedia.hasInternetAccess = false;
$("#guest").show();
startGuest();
}
},

displayWarning: function webrtc_displayWarning() {
Expand Down
2 changes: 1 addition & 1 deletion static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<title>Demo WebRTC Social Service</title>
<link rel="manifest" type="text/json" href="manifest.json">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="./jquery.min.js"></script>
<script src="https://login.persona.org/include.js"></script>
<script src="./checks.js" type="text/javascript"></script>
<script>
Expand Down
4 changes: 4 additions & 0 deletions static/jquery.min.js

Large diffs are not rendered by default.

6 changes: 5 additions & 1 deletion static/media.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// This object currently assumes the following elements are defined in the web page for calls:
// remoteVideo, remoteAudio, localVideo, localAudio
var webrtcMedia = {
hasInternetAccess: true,
startCall: function webrtcMedia_startCall(aPerson, aWin, aAudioOnly, aConnectionCallback,
aDataConnectionCallback) {
var pc = this._createBasicPc(aWin, aPerson, true, aAudioOnly, aConnectionCallback,
Expand Down Expand Up @@ -101,7 +102,10 @@ var webrtcMedia = {
_createBasicPc: function webrtcMedia_createBasicPc(aWin, aPerson, aOriginator, aAudioOnly,
aConnectionCallback,
aDataConnectionCallback) {
var pc = new aWin.mozRTCPeerConnection();
var params;
if (!this.hasInternetAccess)
params = {iceServers: []};
var pc = new aWin.mozRTCPeerConnection(params);
pc.onaddstream = function(obj) {
var type = obj.type;
if (type == "video") {
Expand Down
2 changes: 1 addition & 1 deletion static/mobile.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

<link href="mobile.css" rel="stylesheet" type="text/css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="./jquery.min.js"></script>
<script src="./media.js" type="text/javascript"></script>
<script src="./mobile.js" type="text/javascript"></script>
<script src="./personaHandler.js" type="text/javascript"></script>
Expand Down
2 changes: 1 addition & 1 deletion static/sidebar.htm
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
</style>
<link rel="manifest" type="text/json" href="manifest.json"/>
<link rel="stylesheet" href="./sidebar.css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="./jquery.min.js"></script>
<script src="./media.js" type="text/javascript"></script>
<script src="./personaHandler.js" type="text/javascript"></script>
<script src="./serverConnections.js" type="text/javascript"></script>
Expand Down
10 changes: 6 additions & 4 deletions static/sidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,19 @@ function callPerson(aPerson, aAudioCall) {

function startGuest() {
$("#signin").hide();
$("#guest").html(
'<input type="text" id="user"/>' +
'<input type="button" value="Login" onclick="javascript:guestLogin();"/>'
$("#guest").html('<form onsubmit="javascript:guestLogin(event);">' +
' <input type="text" id="user"/>' +
' <input type="submit" value="Login"/>' +
'</form>'
);
$("#user").focus();
}

function guestLogin() {
function guestLogin(event) {
var user = $("#user").attr("value");
remoteLogin({assertion: user, fake: true});
gFake = true;
event.preventDefault();
}

function signedIn(aEmail) {
Expand Down
4 changes: 2 additions & 2 deletions static/update.rdf
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,15 @@
</em:updates>
</RDF:Description>
<RDF:Description about="urn:mozilla:extension:[email protected]:0.7">
<em:version>0.9</em:version>
<em:version>0.10</em:version>
<em:targetApplication>
<RDF:Description>
<em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
<em:minVersion>20.0a1</em:minVersion>
<em:maxVersion>21.0a1</em:maxVersion>
<em:updateLink>https://webrtc-demo.vcap.mozillalabs.com/webrtc.xpi</em:updateLink>
<em:updateInfoURL>https://webrtc-demo.vcap.mozillalabs.com/update.txt</em:updateInfoURL>
<em:updateHash>sha256:97dabc30764643790b1c523f5a3cb0594433b1b5f4503d2e566ba20235f0ee02</em:updateHash>
<em:updateHash>sha256:24f2459029905bfcdab14e6d3bc0562213281c0d7d5d8ce13b05f4dfe8a90168</em:updateHash>
</RDF:Description>
</em:targetApplication>
</RDF:Description>
Expand Down
3 changes: 1 addition & 2 deletions static/user.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
<html>
<head>
<title>Matey</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="./js/jquery-ui-1.9.1.custom.js"></script>
<script src="./jquery.min.js"></script>
<script src="./user.js" type="text/javascript"></script>
<script src="./serverConnections.js" type="text/javascript"></script>
<script src="./personaHandler.js" type="text/javascript"></script>
Expand Down
Binary file modified static/webrtc.xpi
Binary file not shown.

0 comments on commit 31de95b

Please sign in to comment.