This test client is a simple functional test for a WebRTC enabled browser. It
has only been tested with Chrome, and is most likely only working with Chrome at
the moment. The following instructions are in part Chrome specific.

The following is necessary to run the test:
- A WebRTC enabled Chrome binary. (Available in dev or canary channel, 18.0.1008
or newer.)
- A peerconnection_server binary (make peerconnection_server).

It can be used in two scenarios:
1. Single client calling itself with the server test page in loopback mode as a
fake client.
2. Call between two clients.

To start the test for scenario (1):
1. Start peerconnection_server.
2. Start the WebRTC Chrome build:
$ <path_to_chrome_binary>/chrome --enable-media-stream
The --enable-media-stream flag is required for the time being.
3. Open the server test page, ensure loopback is enabled, choose a name (for
example "loopback") and connect to the server.
For version 18.0.1008 to 18.0.1020, use:
http://libjingle.googlecode.com/svn-history/r103/trunk/talk/examples/peerconnection/server/server_test.html
For version 18.0.1021 and later, use:
http://libjingle.googlecode.com/svn/trunk/talk/examples/peerconnection/server/server_test.html
4. Open the test page, connect to the server, select the loopback peer, click
call.

To start the test for scenario (2):
1. Start peerconnection_server.
2. Start the WebRTC Chrome build, see scenario (1).
3. Open the test page, connect to the server.
4. Open a new new tab, open the test page, connect to the server.
     OR
   On another machine, repeat 2 and 3.
5. Select the other peer, click call.

Note: The web page must normally be on a web server to be able to access the
camera for security reasons.
See http://blog.chromium.org/2008/12/security-in-depth-local-web-pages.html
for more details on this topic. This can be overridden with the flag
--allow-file-access-from-files, in which case running it over the file://
URI scheme works.

Note: It's possible to specify the server and name in the url:
.../webrtc.html?server=my_server&name=my_name
