| Index: media/audio/alsa/alsa_output_unittest.cc
 | 
| diff --git a/media/audio/alsa/alsa_output_unittest.cc b/media/audio/alsa/alsa_output_unittest.cc
 | 
| index ce66804bf80c2c3d787d505545133d69bb737d63..dc3161784c501f008259d88c5e50c1d52f248b40 100644
 | 
| --- a/media/audio/alsa/alsa_output_unittest.cc
 | 
| +++ b/media/audio/alsa/alsa_output_unittest.cc
 | 
| @@ -5,15 +5,19 @@
 | 
|  #include <stdint.h>
 | 
|  
 | 
|  #include "base/macros.h"
 | 
| +#include "base/memory/ptr_util.h"
 | 
|  #include "base/run_loop.h"
 | 
|  #include "base/strings/stringprintf.h"
 | 
| +#include "base/test/simple_test_tick_clock.h"
 | 
|  #include "base/test/test_message_loop.h"
 | 
|  #include "base/threading/thread_task_runner_handle.h"
 | 
| +#include "base/time/time.h"
 | 
|  #include "media/audio/alsa/alsa_output.h"
 | 
|  #include "media/audio/alsa/alsa_wrapper.h"
 | 
|  #include "media/audio/alsa/audio_manager_alsa.h"
 | 
|  #include "media/audio/fake_audio_log_factory.h"
 | 
|  #include "media/audio/mock_audio_source_callback.h"
 | 
| +#include "media/base/audio_timestamp_helper.h"
 | 
|  #include "media/base/data_buffer.h"
 | 
|  #include "media/base/seekable_buffer.h"
 | 
|  #include "testing/gmock/include/gmock/gmock.h"
 | 
| @@ -215,7 +219,7 @@ char AlsaPcmOutputStreamTest::kGenericSurround50[] = "surround50";
 | 
|  
 | 
|  // Custom action to clear a memory buffer.
 | 
|  ACTION(ClearBuffer) {
 | 
| -  arg0->Zero();
 | 
| +  arg3->Zero();
 | 
|  }
 | 
|  
 | 
|  TEST_F(AlsaPcmOutputStreamTest, ConstructedState) {
 | 
| @@ -281,7 +285,7 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
 | 
|  
 | 
|    // Test that having more packets ends up with a latency based on packet size.
 | 
|    const int kOverMinLatencyPacketSize = kPacketFramesInMinLatency + 1;
 | 
| -  int64_t expected_micros = AlsaPcmOutputStream::FramesToTimeDelta(
 | 
| +  int64_t expected_micros = AudioTimestampHelper::FramesToTime(
 | 
|                                  kOverMinLatencyPacketSize * 2, kTestSampleRate)
 | 
|                                  .InMicroseconds();
 | 
|  
 | 
| @@ -311,7 +315,7 @@ TEST_F(AlsaPcmOutputStreamTest, LatencyFloor) {
 | 
|  }
 | 
|  
 | 
|  TEST_F(AlsaPcmOutputStreamTest, OpenClose) {
 | 
| -  int64_t expected_micros = AlsaPcmOutputStream::FramesToTimeDelta(
 | 
| +  int64_t expected_micros = AudioTimestampHelper::FramesToTime(
 | 
|                                  2 * kTestFramesPerPacket, kTestSampleRate)
 | 
|                                  .InMicroseconds();
 | 
|  
 | 
| @@ -419,6 +423,9 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) {
 | 
|    // Open the stream.
 | 
|    AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
 | 
|    ASSERT_TRUE(test_stream->Open());
 | 
| +  base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
 | 
| +  tick_clock->SetNowTicks(base::TimeTicks::Now());
 | 
| +  test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
 | 
|  
 | 
|    // Expect Device setup.
 | 
|    EXPECT_CALL(mock_alsa_wrapper_, PcmDrop(kFakeHandle))
 | 
| @@ -432,7 +439,8 @@ TEST_F(AlsaPcmOutputStreamTest, StartStop) {
 | 
|        .WillRepeatedly(Return(SND_PCM_STATE_RUNNING));
 | 
|    EXPECT_CALL(mock_alsa_wrapper_, PcmDelay(kFakeHandle, _))
 | 
|        .WillRepeatedly(DoAll(SetArgumentPointee<1>(0), Return(0)));
 | 
| -  EXPECT_CALL(mock_callback, OnMoreData(_, _, 0))
 | 
| +  EXPECT_CALL(mock_callback,
 | 
| +              OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
 | 
|        .WillRepeatedly(DoAll(ClearBuffer(), Return(kTestFramesPerPacket)));
 | 
|    EXPECT_CALL(mock_alsa_wrapper_, PcmWritei(kFakeHandle, _, _))
 | 
|        .WillRepeatedly(Return(kTestFramesPerPacket));
 | 
| @@ -583,6 +591,9 @@ TEST_F(AlsaPcmOutputStreamTest, WritePacket_StopStream) {
 | 
|  
 | 
|  TEST_F(AlsaPcmOutputStreamTest, BufferPacket) {
 | 
|    AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
 | 
| +  base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
 | 
| +  tick_clock->SetNowTicks(base::TimeTicks::Now());
 | 
| +  test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
 | 
|    InitBuffer(test_stream);
 | 
|    test_stream->buffer_->Clear();
 | 
|  
 | 
| @@ -595,7 +606,8 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket) {
 | 
|        .WillRepeatedly(Return(0));  // Buffer is full.
 | 
|  
 | 
|    // Return a partially filled packet.
 | 
| -  EXPECT_CALL(mock_callback, OnMoreData(_, _, 0))
 | 
| +  EXPECT_CALL(mock_callback,
 | 
| +              OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
 | 
|        .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
 | 
|  
 | 
|    bool source_exhausted;
 | 
| @@ -610,6 +622,9 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket) {
 | 
|  
 | 
|  TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) {
 | 
|    AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
 | 
| +  base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
 | 
| +  tick_clock->SetNowTicks(base::TimeTicks::Now());
 | 
| +  test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
 | 
|    InitBuffer(test_stream);
 | 
|    test_stream->buffer_->Clear();
 | 
|  
 | 
| @@ -621,7 +636,8 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) {
 | 
|        .WillOnce(DoAll(SetArgumentPointee<1>(-1), Return(0)));
 | 
|    EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_))
 | 
|        .WillRepeatedly(Return(0));  // Buffer is full.
 | 
| -  EXPECT_CALL(mock_callback, OnMoreData(_, _, 0))
 | 
| +  EXPECT_CALL(mock_callback,
 | 
| +              OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
 | 
|        .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
 | 
|  
 | 
|    bool source_exhausted;
 | 
| @@ -636,6 +652,9 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Negative) {
 | 
|  
 | 
|  TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Underrun) {
 | 
|    AlsaPcmOutputStream* test_stream = CreateStream(kTestChannelLayout);
 | 
| +  base::SimpleTestTickClock* const tick_clock = new base::SimpleTestTickClock();
 | 
| +  tick_clock->SetNowTicks(base::TimeTicks::Now());
 | 
| +  test_stream->SetTickClockForTesting(base::WrapUnique(tick_clock));
 | 
|    InitBuffer(test_stream);
 | 
|    test_stream->buffer_->Clear();
 | 
|  
 | 
| @@ -645,7 +664,8 @@ TEST_F(AlsaPcmOutputStreamTest, BufferPacket_Underrun) {
 | 
|        .WillOnce(Return(SND_PCM_STATE_XRUN));
 | 
|    EXPECT_CALL(mock_alsa_wrapper_, PcmAvailUpdate(_))
 | 
|        .WillRepeatedly(Return(0));  // Buffer is full.
 | 
| -  EXPECT_CALL(mock_callback, OnMoreData(_, 0, 0))
 | 
| +  EXPECT_CALL(mock_callback,
 | 
| +              OnMoreData(base::TimeDelta(), tick_clock->NowTicks(), 0, _))
 | 
|        .WillOnce(DoAll(ClearBuffer(), Return(kTestFramesPerPacket / 2)));
 | 
|  
 | 
|    bool source_exhausted;
 | 
| 
 |