function audioOpen(path) {
  var appId;
  var audioAppId;

  var expectedFilesBefore =
      TestEntryInfo.getExpectedRows(path == RootPath.DRIVE ?
          BASIC_DRIVE_ENTRY_SET : BASIC_LOCAL_ENTRY_SET).sort();
  var expectedFilesAfter =
      expectedFilesBefore.concat([ENTRIES.newlyAdded.getExpectedRow()]).sort();

  var caller = getCaller();
  StepsRunner.run([
    function() {
      setupAndWaitUntilReady(null, path, this.next);
    },
    // Select the song.
    function(results) {
      appId = results.windowId;

      // Add an additional audio file.
      addEntries(['local', 'drive'], [ENTRIES.newlyAdded], this.next);
    },
    function(result) {
      chrome.test.assertTrue(result);
      remoteCall.waitForFileListChange(appId, expectedFilesBefore.length).
          then(this.next);
    },
    function(actualFilesAfter) {
      chrome.test.assertEq(expectedFilesAfter, actualFilesAfter);
      remoteCall.callRemoteTestUtil(
          'openFile', appId, ['Beautiful Song.ogg'], this.next);
    },
    // Wait for the audio player window.
    function(result) {
      chrome.test.assertTrue(result);
      audioPlayerApp.waitForWindow('audio_player.html').then(this.next);
    },
    // Wait for the changes of the player status.
    function(inAppId) {
      audioAppId = inAppId;
      audioPlayerApp.waitForElement(audioAppId, 'audio-player[playing]').
          then(this.next);
    },
    // Get the source file name.
    function(element) {
      chrome.test.assertEq(
          'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' +
              'external' + path + '/Beautiful%20Song.ogg',
          element.attributes.currenttrackurl);
      var query1 = 'audio-player /deep/ .track[index="0"][active]';
      var query2 = 'audio-player /deep/ .track[index="1"]:not([active])';
      repeatUntil(function() {
        var trackText1 = getTrackText(audioAppId, query1);
        var trackText2 = getTrackText(audioAppId, query2);
        return Promise.all([trackText1, trackText2]).then(function(tracks) {
          var expected = [
            {title: 'Beautiful Song', artist: 'Unknown Artist'},
            {title: 'newly added file', artist: 'Unknown Artist'}
          ];
          if (!chrome.test.checkDeepEq(expected, tracks)) {
            return pending(
                caller, 'Tracks are expected as: %j, but is %j.', expected,
                tracks);
          }
        });
      }).then(this.next, function(e) { chrome.test.fail(e); });
    },
    // Open another file.
    function() {
      remoteCall.callRemoteTestUtil(
          'openFile', appId, ['newly added file.ogg'], this.next);
    },
    // Wait for the changes of the player status.
    function(result) {
      chrome.test.assertTrue(result, 'Fail to open the 2nd file');
      var query = 'audio-player' +
                  '[playing]' +
                  '[currenttrackurl$="newly%20added%20file.ogg"]';
      audioPlayerApp.waitForElement(audioAppId, query).then(this.next);
    },
    // Get the source file name.
    function(element) {
      chrome.test.assertEq(
          'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' +
              'external' + path + '/newly%20added%20file.ogg',
          element.attributes.currenttrackurl);
      var query1 = 'audio-player /deep/ .track[index="0"]:not([active])';
      var query2 = 'audio-player /deep/ .track[index="1"][active]';
      repeatUntil(function() {
        var trackText1 = getTrackText(audioAppId, query1);
        var trackText2 = getTrackText(audioAppId, query2);
        return Promise.all([trackText1, trackText2]).then(function(tracks) {
          var expected = [
            {title: 'Beautiful Song', artist: 'Unknown Artist'},
            {title: 'newly added file', artist: 'Unknown Artist'}
          ];
          if (!chrome.test.checkDeepEq(expected, tracks)) {
            return pending(
                caller, 'Tracks are expected as: %j, but is %j.', expected,
                tracks);
          }
        });
      }).then(this.next, function(e) { chrome.test.fail(e); });
    },
    // Wait for the changes of the player status.
    function() {
      // Close window
      audioPlayerApp.closeWindowAndWait(audioAppId).then(this.next);
    },
    // Wait for the audio player.
    function(result) {
      chrome.test.assertTrue(result, 'Fail to close the window');
      checkIfNoErrorsOccured(this.next);
    }
  ]);
}
/**
 * Tests if the audio player shows up for the selected image and that the audio
 * is loaded successfully.
 *
 * @param {string} path Directory path to be tested.
 */
Tests if the audio player shows up for the selected image and that the audio
is loaded successfully.

@param {string} path Directory path to be tested.
Tests if the audio player shows up for the selected image and that the audio is loaded successfully . @param { string } path Directory path to be tested .
function audioOpen(path) {
  var appId;
  var audioAppId;
  var expectedFilesBefore =
      TestEntryInfo.getExpectedRows(path == RootPath.DRIVE ?
          BASIC_DRIVE_ENTRY_SET : BASIC_LOCAL_ENTRY_SET).sort();
  var expectedFilesAfter =
      expectedFilesBefore.concat([ENTRIES.newlyAdded.getExpectedRow()]).sort();
  var caller = getCaller();
  StepsRunner.run([
    function() {
      setupAndWaitUntilReady(null, path, this.next);
    },
    function(results) {
      appId = results.windowId;
      addEntries(['local', 'drive'], [ENTRIES.newlyAdded], this.next);
    },
    function(result) {
      chrome.test.assertTrue(result);
      remoteCall.waitForFileListChange(appId, expectedFilesBefore.length).
          then(this.next);
    },
    function(actualFilesAfter) {
      chrome.test.assertEq(expectedFilesAfter, actualFilesAfter);
      remoteCall.callRemoteTestUtil(
          'openFile', appId, ['Beautiful Song.ogg'], this.next);
    },
    function(result) {
      chrome.test.assertTrue(result);
      audioPlayerApp.waitForWindow('audio_player.html').then(this.next);
    },
    function(inAppId) {
      audioAppId = inAppId;
      audioPlayerApp.waitForElement(audioAppId, 'audio-player[playing]').
          then(this.next);
    },
    function(element) {
      chrome.test.assertEq(
          'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' +
              'external' + path + '/Beautiful%20Song.ogg',
          element.attributes.currenttrackurl);
      var query1 = 'audio-player /deep/ .track[index="0"][active]';
      var query2 = 'audio-player /deep/ .track[index="1"]:not([active])';
      repeatUntil(function() {
        var trackText1 = getTrackText(audioAppId, query1);
        var trackText2 = getTrackText(audioAppId, query2);
        return Promise.all([trackText1, trackText2]).then(function(tracks) {
          var expected = [
            {title: 'Beautiful Song', artist: 'Unknown Artist'},
            {title: 'newly added file', artist: 'Unknown Artist'}
          ];
          if (!chrome.test.checkDeepEq(expected, tracks)) {
            return pending(
                caller, 'Tracks are expected as: %j, but is %j.', expected,
                tracks);
          }
        });
      }).then(this.next, function(e) { chrome.test.fail(e); });
    },
    function() {
      remoteCall.callRemoteTestUtil(
          'openFile', appId, ['newly added file.ogg'], this.next);
    },
    function(result) {
      chrome.test.assertTrue(result, 'Fail to open the 2nd file');
      var query = 'audio-player' +
                  '[playing]' +
                  '[currenttrackurl$="newly%20added%20file.ogg"]';
      audioPlayerApp.waitForElement(audioAppId, query).then(this.next);
    },
    function(element) {
      chrome.test.assertEq(
          'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' +
              'external' + path + '/newly%20added%20file.ogg',
          element.attributes.currenttrackurl);
      var query1 = 'audio-player /deep/ .track[index="0"]:not([active])';
      var query2 = 'audio-player /deep/ .track[index="1"][active]';
      repeatUntil(function() {
        var trackText1 = getTrackText(audioAppId, query1);
        var trackText2 = getTrackText(audioAppId, query2);
        return Promise.all([trackText1, trackText2]).then(function(tracks) {
          var expected = [
            {title: 'Beautiful Song', artist: 'Unknown Artist'},
            {title: 'newly added file', artist: 'Unknown Artist'}
          ];
          if (!chrome.test.checkDeepEq(expected, tracks)) {
            return pending(
                caller, 'Tracks are expected as: %j, but is %j.', expected,
                tracks);
          }
        });
      }).then(this.next, function(e) { chrome.test.fail(e); });
    },
    function() {
      audioPlayerApp.closeWindowAndWait(audioAppId).then(this.next);
    },
    function(result) {
      chrome.test.assertTrue(result, 'Fail to close the window');
      checkIfNoErrorsOccured(this.next);
    }
  ]);
}
function audioOpen ( path ) { var appId ; var audioAppId ; var expectedFilesBefore = TestEntryInfo . getExpectedRows ( path == RootPath . DRIVE ? BASIC_DRIVE_ENTRY_SET : BASIC_LOCAL_ENTRY_SET ) . sort ( ) ; var expectedFilesAfter = expectedFilesBefore . concat ( [ ENTRIES . newlyAdded . getExpectedRow ( ) ] ) . sort ( ) ; var caller = getCaller ( ) ; StepsRunner . run ( [ function ( ) { setupAndWaitUntilReady ( null , path , this . next ) ; } , function ( results ) { appId = results . windowId ; addEntries ( [ 'local' , 'drive' ] , [ ENTRIES . newlyAdded ] , this . next ) ; } , function ( result ) { chrome . test . assertTrue ( result ) ; remoteCall . waitForFileListChange ( appId , expectedFilesBefore . length ) . then ( this . next ) ; } , function ( actualFilesAfter ) { chrome . test . assertEq ( expectedFilesAfter , actualFilesAfter ) ; remoteCall . callRemoteTestUtil ( 'openFile' , appId , [ 'Beautiful Song.ogg' ] , this . next ) ; } , function ( result ) { chrome . test . assertTrue ( result ) ; audioPlayerApp . waitForWindow ( 'audio_player.html' ) . then ( this . next ) ; } , function ( inAppId ) { audioAppId = inAppId ; audioPlayerApp . waitForElement ( audioAppId , 'audio-player[playing]' ) . then ( this . next ) ; } , function ( element ) { chrome . test . assertEq ( 'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' + 'external' + path + '/Beautiful%20Song.ogg' , element . attributes . currenttrackurl ) ; var query1 = 'audio-player /deep/ .track[index="0"][active]' ; var query2 = 'audio-player /deep/ .track[index="1"]:not([active])' ; repeatUntil ( function ( ) { var trackText1 = getTrackText ( audioAppId , query1 ) ; var trackText2 = getTrackText ( audioAppId , query2 ) ; return Promise . all ( [ trackText1 , trackText2 ] ) . then ( function ( tracks ) { var expected = [ { title : 'Beautiful Song' , artist : 'Unknown Artist' } , { title : 'newly added file' , artist : 'Unknown Artist' } ] ; if ( ! chrome . test . checkDeepEq ( expected , tracks ) ) { return pending ( caller , 'Tracks are expected as: %j, but is %j.' , expected , tracks ) ; } } ) ; } ) . then ( this . next , function ( e ) { chrome . test . fail ( e ) ; } ) ; } , function ( ) { remoteCall . callRemoteTestUtil ( 'openFile' , appId , [ 'newly added file.ogg' ] , this . next ) ; } , function ( result ) { chrome . test . assertTrue ( result , 'Fail to open the 2nd file' ) ; var query = 'audio-player' + '[playing]' + '[currenttrackurl$="newly%20added%20file.ogg"]' ; audioPlayerApp . waitForElement ( audioAppId , query ) . then ( this . next ) ; } , function ( element ) { chrome . test . assertEq ( 'filesystem:chrome-extension://' + AUDIO_PLAYER_APP_ID + '/' + 'external' + path + '/newly%20added%20file.ogg' , element . attributes . currenttrackurl ) ; var query1 = 'audio-player /deep/ .track[index="0"]:not([active])' ; var query2 = 'audio-player /deep/ .track[index="1"][active]' ; repeatUntil ( function ( ) { var trackText1 = getTrackText ( audioAppId , query1 ) ; var trackText2 = getTrackText ( audioAppId , query2 ) ; return Promise . all ( [ trackText1 , trackText2 ] ) . then ( function ( tracks ) { var expected = [ { title : 'Beautiful Song' , artist : 'Unknown Artist' } , { title : 'newly added file' , artist : 'Unknown Artist' } ] ; if ( ! chrome . test . checkDeepEq ( expected , tracks ) ) { return pending ( caller , 'Tracks are expected as: %j, but is %j.' , expected , tracks ) ; } } ) ; } ) . then ( this . next , function ( e ) { chrome . test . fail ( e ) ; } ) ; } , function ( ) { audioPlayerApp . closeWindowAndWait ( audioAppId ) . then ( this . next ) ; } , function ( result ) { chrome . test . assertTrue ( result , 'Fail to close the window' ) ; checkIfNoErrorsOccured ( this . next ) ; } ] ) ; }
Tests if the audio player shows up for the selected image and that the audio
 is loaded successfully.
Tests if the audio player shows up for the selected image and that the audio is loaded successfully .
// Select the song. // Add an additional audio file. // Wait for the audio player window. // Wait for the changes of the player status. // Get the source file name. // Open another file. // Wait for the changes of the player status. // Get the source file name. // Wait for the changes of the player status. // Close window // Wait for the audio player.