 Chromium Code Reviews
 Chromium Code Reviews Issue 11038021:
  Implement Chrome Extension TabCapture API.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 11038021:
  Implement Chrome Extension TabCapture API.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| Index: chrome/test/data/extensions/api_test/tab_capture/experimental/test.js | 
| diff --git a/chrome/test/data/extensions/api_test/tab_capture/experimental/test.js b/chrome/test/data/extensions/api_test/tab_capture/experimental/test.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..2c617d66895f9ecb104134c8a270da0e0ee826b5 | 
| --- /dev/null | 
| +++ b/chrome/test/data/extensions/api_test/tab_capture/experimental/test.js | 
| @@ -0,0 +1,115 @@ | 
| +// Copyright (c) 2012 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. | 
| + | 
| +var tabCapture = chrome.tabCapture; | 
| 
Aaron Boodman
2012/10/16 04:19:27
It would be good to have a test somewhere that you
 
justinlin
2012/10/17 08:32:26
See previous comment.
 | 
| + | 
| +chrome.test.runTests([ | 
| + | 
| + function getTabMediaInvalidTab() { | 
| + var tabMediaRequestCallback = function(stream) { | 
| + chrome.test.assertEq(undefined, stream); | 
| + chrome.test.assertLastError('Could not find the specified tab.'); | 
| + chrome.test.succeed(); | 
| + }; | 
| + | 
| + tabCapture.capture(-1, {audio: true, video: true}, | 
| + tabMediaRequestCallback); | 
| + }, | 
| + | 
| + function getTabMedia() { | 
| + var tabId = -1; | 
| + // Tab capture events in the order they happen. | 
| + var tabCaptureEvents = []; | 
| + | 
| + var tabMediaRequestCallback = function(stream) { | 
| + chrome.test.assertTrue(stream !== undefined); | 
| + stream.stop(); | 
| + }; | 
| + | 
| + var tabCaptureListener = function(info) { | 
| + chrome.test.assertEq(tabId, info.tabId); | 
| + console.log(info.status); | 
| + if (info.status == 'stopped') { | 
| + chrome.test.assertEq('active', tabCaptureEvents.pop()); | 
| + chrome.test.assertEq('pending', tabCaptureEvents.pop()); | 
| + chrome.test.assertEq('requested', tabCaptureEvents.pop()); | 
| + chrome.test.succeed(); | 
| + return; | 
| + } | 
| + tabCaptureEvents.push(info.status); | 
| + } | 
| + | 
| + tabCapture.onStatusChanged.addListener(tabCaptureListener); | 
| + | 
| + var gotTabId = function(tab) { | 
| + tabId = tab[0].id; | 
| + console.log('using tab: ' + tabId); | 
| + tabCapture.capture(tabId, {audio: true, video: true}, | 
| + tabMediaRequestCallback); | 
| + }; | 
| + chrome.tabs.query({active: true}, gotTabId); | 
| + }, | 
| + | 
| + function getCapturedTabs() { | 
| + var tabId = -1; | 
| + var activeStream = null; | 
| + | 
| + var capturedTabsAfterClose = function(infos) { | 
| + chrome.test.assertEq(1, infos.length); | 
| + chrome.test.assertEq(tabId, infos[0].tabId); | 
| + chrome.test.assertEq('stopped', infos[0].status); | 
| + chrome.test.succeed(); | 
| + } | 
| + | 
| + var capturedTabsAfterOpen = function(infos) { | 
| + chrome.test.assertEq(1, infos.length); | 
| + chrome.test.assertEq(tabId, infos[0].tabId); | 
| + chrome.test.assertEq('active', infos[0].status); | 
| + activeStream.stop(); | 
| + } | 
| + | 
| + var tabMediaRequestCallback = function(stream) { | 
| + chrome.test.assertTrue(stream !== undefined); | 
| + activeStream = stream; | 
| + tabCapture.getCapturedTabs(capturedTabsAfterOpen); | 
| + }; | 
| + | 
| + var gotTabId = function(tab) { | 
| + tabId = tab[0].id; | 
| + console.log('using tab: ' + tabId); | 
| + tabCapture.capture(tabId, {audio: true, video: true}, | 
| + tabMediaRequestCallback); | 
| + }; | 
| + chrome.tabs.query({active: true}, gotTabId); | 
| + }, | 
| + | 
| + function captureSameTab() { | 
| + var tabId = -1; | 
| + var stream1 = null; | 
| + | 
| + var tabMediaRequestCallback2 = function(stream) { | 
| + chrome.test.assertLastError( | 
| + 'Cannot capture a tab with an active stream.'); | 
| + chrome.test.assertTrue(stream === undefined); | 
| + stream1.stop(); | 
| + chrome.test.succeed(); | 
| + }; | 
| + | 
| + var tabMediaRequestCallback = function(stream) { | 
| + chrome.test.assertTrue(stream !== undefined); | 
| + stream1 = stream; | 
| + tabCapture.capture(tabId, {audio: true, video: true}, | 
| + tabMediaRequestCallback2); | 
| + }; | 
| + | 
| + var gotTabId = function(tab) { | 
| + tabId = tab[0].id; | 
| + console.log('using tab: ' + tabId); | 
| + tabCapture.capture(tabId, {audio: true, video: true}, | 
| + tabMediaRequestCallback); | 
| + }; | 
| + chrome.tabs.query({active: true}, gotTabId); | 
| + }, | 
| + | 
| +]); |