HTTPS Server used instead of HTTP for loading the bots to avoid the media permission pop-up clicks every time running the test.

This code review based on the running issue:
https://webrtc-codereview.appspot.com/24939004/

R=andresp@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/27769004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7497 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/tools/rtcbot/README b/webrtc/tools/rtcbot/README
index bfa981c..1f4d7c1 100644
--- a/webrtc/tools/rtcbot/README
+++ b/webrtc/tools/rtcbot/README
@@ -17,8 +17,18 @@
 == How to run the test ==
  $ cd trunk/webrtc/tool/rtcbot
  $ npm install express browserify ws websocket-stream dnode
+ $ mkdir configurations
+ $ cd configurations
+ $ openssl genrsa -out priv.pem 1024
+ $ openssl req -x509 -new -key priv.pem -days 3650 -out cert.crt
+ $ cd trunk/webrtc/tool/rtcbot
  $ node main.js "<test_name>"
 
+* Note:
+    In first time you will use rtcBot you will receive a warning telling
+  you that your connection is not private. Just avoid this warning and
+  click Proceed to localhost (unsafe).
+
 == How can I see the list of available tests? ==
  $ node main.js
 
@@ -29,6 +39,10 @@
  $ nvm install 0.10
  $ nvm use 0.10
 
+== Why generating the private key and self signed certificate? ==
+  - Private key and certificate are used for creating HTTPs server in
+    rtcBot for loading the required files on the different types of the bots.
+
 == Supported Bot Types ==
   - "chrome": chrome on host machine.
   - "android-chrome": chrome on android device. Details in "Android" Section.
diff --git a/webrtc/tools/rtcbot/bot/api.js b/webrtc/tools/rtcbot/bot/api.js
index b51d49d..7e1a436 100644
--- a/webrtc/tools/rtcbot/bot/api.js
+++ b/webrtc/tools/rtcbot/bot/api.js
@@ -15,7 +15,7 @@
 var Dnode = require('dnode');
 
 function connectToServer(api) {
-  var stream = new WebSocketStream("ws://127.0.0.1:8080/");
+  var stream = new WebSocketStream("wss://localhost:8080/");
   var dnode = new Dnode(api);
   dnode.on('error', function (error) { console.log(error); });
   dnode.pipe(stream).pipe(dnode);
diff --git a/webrtc/tools/rtcbot/botmanager.js b/webrtc/tools/rtcbot/botmanager.js
index cd88f19..5b325bd 100644
--- a/webrtc/tools/rtcbot/botmanager.js
+++ b/webrtc/tools/rtcbot/botmanager.js
@@ -8,7 +8,8 @@
 //
 // botmanager.js module allows a test to spawn bots that expose an RPC API
 // to be controlled by tests.
-var http = require('http');
+var https = require('https');
+var fs = require('fs');
 var child = require('child_process');
 var Browserify = require('browserify');
 var Dnode = require('dnode');
@@ -16,7 +17,7 @@
 var WebSocketServer = require('ws').Server;
 var WebSocketStream = require('websocket-stream');
 
-// BotManager runs a HttpServer that serves bots assets and and WebSocketServer
+// BotManager runs a HttpsServer that serves bots assets and and WebSocketServer
 // that listens to incoming connections. Once a connection is available it
 // connects it to bots pending endpoints.
 //
@@ -66,7 +67,11 @@
 
     this.app_.use('/bot/', Express.static(__dirname + '/bot'));
 
-    this.server_ = http.createServer(this.app_);
+    var options = options = {
+      key: fs.readFileSync('configurations/priv.pem', 'utf8'),
+      cert: fs.readFileSync('configurations/cert.crt', 'utf8')
+    };
+    this.server_ = https.createServer(options, this.app_);
 
     this.webSocketServer_ = new WebSocketServer({ server: this.server_ });
     this.webSocketServer_.on('connection', this.onConnection_.bind(this));
@@ -116,7 +121,7 @@
   }
 }
 
-// BrowserBot spawns a process to open "http://localhost:8080/bot/browser".
+// BrowserBot spawns a process to open "https://localhost:8080/bot/browser".
 //
 // That page once loaded, connects to the websocket server run by BotManager
 // and exposes the bot api.
@@ -128,14 +133,14 @@
 BrowserBot.prototype = {
   spawnBotProcess_: function () {
     this.log('Spawning browser');
-    child.exec('google-chrome "http://localhost:8080/bot/browser/"');
+    child.exec('google-chrome "https://localhost:8080/bot/browser/"');
   },
 
   __proto__: Bot.prototype
 }
 
 // AndroidChromeBot spawns a process to open
-// "http://localhost:8080/bot/browser/" on chrome for Android.
+// "https://localhost:8080/bot/browser/" on chrome for Android.
 AndroidChromeBot = function (name, androidDeviceManager, callback) {
   Bot.call(this, name, callback);
   androidDeviceManager.getNewDevice(function (serialNumber) {
@@ -149,7 +154,7 @@
     this.log('Spawning Android device with serial ' + this.serialNumber_);
     var runChrome = 'adb -s ' + this.serialNumber_ + ' shell am start ' +
     '-n com.android.chrome/com.google.android.apps.chrome.Main ' +
-    '-d http://localhost:8080/bot/browser/';
+    '-d https://localhost:8080/bot/browser/';
     child.exec(runChrome, function (error, stdout, stderr) {
       if (error) {
         this.log(error);