-
+
diff --git a/static/js/controllers/mediastreamcontroller.js b/static/js/controllers/mediastreamcontroller.js
index eda57ca6..fb25ec23 100644
--- a/static/js/controllers/mediastreamcontroller.js
+++ b/static/js/controllers/mediastreamcontroller.js
@@ -20,7 +20,7 @@
*/
define(['underscore', 'bigscreen', 'moment', 'sjcl', 'modernizr', 'webrtc.adapter'], function(_, BigScreen, moment, sjcl, Modernizr) {
- return ["$scope", "$rootScope", "$element", "$window", "$timeout", "safeDisplayName", "safeApply", "mediaStream", "appData", "playSound", "desktopNotify", "alertify", "toastr", "translation", "fileDownload", "localStorage", function($scope, $rootScope, $element, $window, $timeout, safeDisplayName, safeApply, mediaStream, appData, playSound, desktopNotify, alertify, toastr, translation, fileDownload, localStorage) {
+ return ["$scope", "$rootScope", "$element", "$window", "$timeout", "safeDisplayName", "safeApply", "mediaStream", "appData", "playSound", "desktopNotify", "alertify", "toastr", "translation", "fileDownload", "localStorage", "screensharing", function($scope, $rootScope, $element, $window, $timeout, safeDisplayName, safeApply, mediaStream, appData, playSound, desktopNotify, alertify, toastr, translation, fileDownload, localStorage, screensharing) {
/*console.log("route", $route, $routeParams, $location);*/
@@ -119,6 +119,11 @@ define(['underscore', 'bigscreen', 'moment', 'sjcl', 'modernizr', 'webrtc.adapte
$scope.webrtcDetectedBrowser = $window.webrtcDetectedBrowser;
$scope.webrtcDetectedVersion = $window.webrtcDetectedVersion;
+ // Add support status.
+ $scope.supported = {
+ screensharing: screensharing.supported
+ }
+
// Default scope data.
$scope.status = "initializing";
$scope.id = null;
diff --git a/static/js/services/screensharing.js b/static/js/services/screensharing.js
new file mode 100644
index 00000000..e5500677
--- /dev/null
+++ b/static/js/services/screensharing.js
@@ -0,0 +1,51 @@
+/*
+ * Spreed WebRTC.
+ * Copyright (C) 2013-2014 struktur AG
+ *
+ * This file is part of Spreed WebRTC.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+define(['webrtc.adapter'], function() {
+
+ // screensharing
+ return ["$window", function($window) {
+
+ // Check if we can do screensharing.
+ var supported = false;
+ if ($window.webrtcDetectedBrowser === "chrome") {
+ if ($window.webrtcDetectedVersion >= 32 &&
+ $window.webrtcDetectedVersion < 37) {
+ // Support for flag based developer screen sharing came in Chrome 32.
+ // It was removed in Chrome 37 in favour of chrome.chooseDesktopMedia
+ // https://code.google.com/p/chromium/issues/detail?id=347641
+ supported = true;
+ } else if ($window.webrtcDetectedVersion >= 37) {
+ // We need a extension to support screen sharing. See
+ // https://developer.chrome.com/extensions/desktopCapture#method-chooseDesktopMedia
+ // for details.
+ }
+ } else {
+ // Currently Chrome only.
+ }
+
+ // public API.
+ return {
+ supported: supported
+ }
+
+ }];
+
+});
\ No newline at end of file
diff --git a/static/js/services/services.js b/static/js/services/services.js
index 60d8f6d4..fd18dd33 100644
--- a/static/js/services/services.js
+++ b/static/js/services/services.js
@@ -51,7 +51,8 @@ define([
'services/localstorage',
'services/animationframe',
'services/dialogs',
- 'services/geolocation'], function(_,
+ 'services/geolocation',
+ 'services/screensharing'], function(_,
desktopNotify,
playSound,
safeApply,
@@ -82,7 +83,8 @@ buddySession,
localStorage,
animationFrame,
dialogs,
-geolocation) {
+geolocation,
+screensharing) {
var services = {
desktopNotify: desktopNotify,
@@ -115,7 +117,8 @@ geolocation) {
localStorage: localStorage,
animationFrame: animationFrame,
dialogs: dialogs,
- geolocation: geolocation
+ geolocation: geolocation,
+ screensharing: screensharing
};
var initialize = function(angModule) {