Chromium Code Reviews| Index: chrome/test/data/extensions/api_test/tab_capture/fullscreen_test.js |
| diff --git a/chrome/test/data/extensions/api_test/tab_capture/fullscreen_test.js b/chrome/test/data/extensions/api_test/tab_capture/fullscreen_test.js |
| index 7c54fe3d93594abcc9fc9bcb6b9f32bdbbb6d61e..9ec794d4f5cc9b9d07250e011a465c4380ae2d10 100644 |
| --- a/chrome/test/data/extensions/api_test/tab_capture/fullscreen_test.js |
| +++ b/chrome/test/data/extensions/api_test/tab_capture/fullscreen_test.js |
| @@ -2,49 +2,77 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| -window.addEventListener('load', function() { |
| - document.body.onclick = function toggleBodyFullscreen() { |
| +window.addEventListener('load', () => { |
| + // Register the fullscreen change listener. This is used to determine when to |
| + // signal the C++ side of this test that the document has entered/exited |
| + // fullscreen. NOTE: It's very important NOT to use the |
| + // tabCapture.onStatusChanged listener to signal the C++ side of this test |
| + // because sometimes the document's fullscreen state change lags behind what |
| + // the tabCapture API knows about the browser window's fullscreen state. |
| + // Otherwise, the C++ side of this test might proceed out-of-sync and fail. |
| + // http://crbug.com/675851 |
| + if (document.fullscreenEnabled) { |
| + document.onfullscreenchange = () => { |
| + if (!!document.fullscreenElement) |
|
xjz
2017/01/03 18:14:06
ooc: Is this explicit conversion required? Can it
miu
2017/01/03 20:53:35
Done.
|
| + chrome.test.sendMessage('entered_fullscreen'); |
| + }; |
| + } else if (document.webkitFullscreenEnabled) { |
| + document.onwebkitfullscreenchange = () => { |
| + if (!!document.webkitFullscreenElement) |
|
xjz
2017/01/03 18:14:06
ditto: if (document.webkitFullscreenElement)?
miu
2017/01/03 20:53:35
Done.
|
| + chrome.test.sendMessage('entered_fullscreen'); |
| + }; |
| + } else { |
| + chrome.test.assertTrue(!'HTML5 Fullscreen API missing'); |
| + } |
| + |
| + // Register an onclick listener that toggles the entire document into or |
| + // out-of fullscreen mode. The clicks are generated by the C++ side of this |
| + // test. |
| + document.documentElement.onclick = () => { |
| if (document.fullscreenElement || document.webkitFullscreenElement) { |
| if (document.exitFullscreen) |
| document.exitFullscreen(); |
| else if (document.webkitExitFullscreen) |
| document.webkitExitFullscreen(); |
| else |
| - chrome.test.assertTrue(!"HTML5 Fullscreen API missing"); |
| + chrome.test.assertTrue(!'HTML5 Fullscreen API missing'); |
| } else { |
| - if (document.body.requestFullscreen) |
| - document.body.requestFullscreen(); |
| - else if (document.body.webkitRequestFullscreen) |
| - document.body.webkitRequestFullscreen(); |
| + if (document.documentElement.requestFullscreen) |
| + document.documentElement.requestFullscreen(); |
| + else if (document.documentElement.webkitRequestFullscreen) |
| + document.documentElement.webkitRequestFullscreen(); |
| else |
| - chrome.test.assertTrue(!"HTML5 Fullscreen API missing"); |
| + chrome.test.assertTrue(!'HTML5 Fullscreen API missing'); |
| } |
| }; |
| -}); |
| -var mediaStream = null; |
| -var events = []; |
| + let mediaStream = null; |
| + const events = []; |
| -chrome.tabCapture.onStatusChanged.addListener(function(info) { |
| - if (info.status == 'active') { |
| - events.push(info.fullscreen); |
| - if (events.length == 3) { |
| - chrome.test.assertFalse(events[0]); |
| - chrome.test.assertTrue(events[1]); |
| - chrome.test.assertFalse(events[2]); |
| - mediaStream.getVideoTracks()[0].stop(); |
| - mediaStream.getAudioTracks()[0].stop(); |
| - chrome.test.succeed(); |
| + // Register the tab capture status change listener, which records the changes |
| + // to fullscreen state according to the tab capture API implementation. Once |
| + // there are three changes, check the results and succeed() the test. |
| + chrome.tabCapture.onStatusChanged.addListener(info => { |
| + if (info.status == 'active') { |
| + events.push(info.fullscreen); |
| + if (events.length == 3) { |
| + mediaStream.getVideoTracks()[0].stop(); |
| + mediaStream.getAudioTracks()[0].stop(); |
| + chrome.test.assertFalse(events[0]); |
| + chrome.test.assertTrue(events[1]); |
| + chrome.test.assertFalse(events[2]); |
| + chrome.test.succeed(); |
| + } |
| } |
| + }); |
| - if (info.fullscreen) |
| - chrome.test.sendMessage('entered_fullscreen'); |
| - } |
| -}); |
| - |
| -chrome.tabCapture.capture({audio: true, video: true}, function(stream) { |
| - chrome.test.assertTrue(!!stream); |
| - mediaStream = stream; |
| - chrome.test.notifyPass(); |
| - chrome.test.sendMessage('tab_capture_started'); |
| + // Now that all listeners are in-place, start tab capture. Once tab capture is |
| + // running, notify the C++ side of this test that it may commence with the |
| + // "fullscreen toggle mouse clicks." |
| + chrome.tabCapture.capture({audio: true, video: true}, stream => { |
| + chrome.test.assertTrue(!!stream); |
| + mediaStream = stream; |
| + chrome.test.notifyPass(); |
| + chrome.test.sendMessage('tab_capture_started'); |
| + }); |
| }); |