Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(526)

Unified Diff: tools/perf/page_sets/webrtc_cases/canvas-capture.js

Issue 2761163003: Use local pages for webrtc telemetry tests. (Closed)
Patch Set: Exclude all of webrtc_cases in PRESUBMIT.py and add a comment explaining it is because these are te… Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/page_sets/webrtc_cases/canvas-capture.html ('k') | tools/perf/page_sets/webrtc_cases/common.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/page_sets/webrtc_cases/canvas-capture.js
diff --git a/tools/perf/page_sets/webrtc_cases/canvas-capture.js b/tools/perf/page_sets/webrtc_cases/canvas-capture.js
new file mode 100644
index 0000000000000000000000000000000000000000..ce7e11d3efe6f9758600eb9212be536e35549397
--- /dev/null
+++ b/tools/perf/page_sets/webrtc_cases/canvas-capture.js
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2017 The Chromium Authors. All rights reserved.
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+'use strict';
+
+const DEFAULT_FRAME_RATE = 30;
+
+var canvas = document.getElementById('canvas');
+var context = canvas.getContext('2d');
+
+var remoteVideo = document.getElementById('remoteVideo');
+var startButton = document.getElementById('startButton');
+startButton.onclick = start;
+
+var pc1;
+var pc2;
+var stream;
+
+function logError(err) {
+ console.error(err);
+}
+
+// This function draws a red rectangle on the canvas using
+// requestAnimationFrame().
+function draw() {
+ window.requestAnimationFrame(draw);
+ context.rect(0, 0, canvas.clientWidth, canvas.clientHeight);
+ var randomNumber = Math.random();
+ var hue;
+ if (randomNumber < 0.33)
+ hue = 'red';
+ else if (randomNumber < 0.66)
+ hue = 'green';
+ else
+ hue = 'blue';
+ context.fillStyle = hue;
+ context.fill();
+}
+
+function start() {
+ startButton.onclick = hangup;
+ startButton.className = 'red';
+ startButton.innerHTML = 'Stop test';
+ draw();
+ stream = canvas.captureStream(DEFAULT_FRAME_RATE);
+ call();
+}
+
+function call() {
+ var servers = null;
+ pc1 = new RTCPeerConnection(servers);
+ pc1.onicecandidate = (event) => {
+ if (event.candidate) {
+ pc2.addIceCandidate(event.candidate);
+ }
+ };
+
+ pc2 = new RTCPeerConnection(servers);
+ pc2.onicecandidate = (event) => {
+ if (event.candidate) {
+ pc1.addIceCandidate(event.candidate);
+ }
+ };
+ pc2.onaddstream = (event) => {
+ remoteVideo.srcObject = event.stream;
+ };
+
+ pc1.addStream(stream);
+ pc1.createOffer({
+ offerToReceiveAudio: 1,
+ offerToReceiveVideo: 1
+ }).then(onCreateOfferSuccess, logError);
+}
+
+function onCreateOfferSuccess(desc) {
+ pc1.setLocalDescription(desc);
+ pc2.setRemoteDescription(desc);
+ pc2.createAnswer().then(onCreateAnswerSuccess, logError);
+}
+
+function onCreateAnswerSuccess(desc) {
+ pc2.setLocalDescription(desc);
+ pc1.setRemoteDescription(desc);
+}
+
+function hangup() {
+ pc1.close();
+ pc2.close();
+ pc1 = null;
+ pc2 = null;
+ startButton.onclick = start;
+ startButton.className = 'green';
+ startButton.innerHTML = 'Start test';
+}
« no previous file with comments | « tools/perf/page_sets/webrtc_cases/canvas-capture.html ('k') | tools/perf/page_sets/webrtc_cases/common.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698