Given /^I create sample videos$/ do
  @shared_video_dir_on_host = "#{$config["TMPDIR"]}/shared_video_dir"
  @shared_video_dir_on_guest = "/tmp/shared_video_dir"
  FileUtils.mkdir_p(@shared_video_dir_on_host)
  add_after_scenario_hook { FileUtils.rm_r(@shared_video_dir_on_host) }
  fatal_system("avconv -loop 1 -t 30 -f image2 " +
               "-i 'features/images/TailsBootSplash.png' " +
               "-an -vcodec libx264 -y " +
               '-filter:v "crop=in_w-mod(in_w\,2):in_h-mod(in_h\,2)" ' +
               "'#{@shared_video_dir_on_host}/video.mp4' >/dev/null 2>&1")
end

Given /^I setup a filesystem share containing sample videos$/ do
  $vm.add_share(@shared_video_dir_on_host, @shared_video_dir_on_guest)
end

Given /^I copy the sample videos to "([^"]+)" as user "([^"]+)"$/ do |destination, user|
  for video_on_host in Dir.glob("#{@shared_video_dir_on_host}/*.mp4") do
    video_name = File.basename(video_on_host)
    src_on_guest = "#{@shared_video_dir_on_guest}/#{video_name}"
    dst_on_guest = "#{destination}/#{video_name}"
    step "I copy \"#{src_on_guest}\" to \"#{dst_on_guest}\" as user \"amnesia\""
  end
end

When /^I(?:| try to) open "([^"]+)" with Totem$/ do |filename|
  step "I run \"totem #{filename}\" in GNOME Terminal"
end

When /^I close Totem$/ do
  step 'I kill the process "totem"'
end

Then /^I can watch a WebM video over HTTPs$/ do
  test_url = 'https://webm.html5.org/test.webm'
  recovery_on_failure = Proc.new do
    step 'I close Totem'
  end
  retry_tor(recovery_on_failure) do
    step "I open \"#{test_url}\" with Totem"
    @screen.wait("SampleRemoteWebMVideoFrame.png", 120)
  end
end