| Index: media/base/mock_filters.h | 
| diff --git a/media/base/mock_filters.h b/media/base/mock_filters.h | 
| index 3b1deb31e9ddbd6599110f90ecb3861a5e574981..36b676ff5859fd35ff174abf81010a14a699d10e 100644 | 
| --- a/media/base/mock_filters.h | 
| +++ b/media/base/mock_filters.h | 
| @@ -50,7 +50,12 @@ class Destroyable : public MockClass { | 
| // gmock will track the number of times the methods are executed. | 
| class MockFilterCallback { | 
| public: | 
| -  MockFilterCallback() {} | 
| +  MockFilterCallback() : run_destroy_callback_(true) { | 
| +  } | 
| + | 
| +  MockFilterCallback(bool run_destroy_callback) : | 
| +    run_destroy_callback_(run_destroy_callback) { | 
| +  } | 
| virtual ~MockFilterCallback() {} | 
|  | 
| MOCK_METHOD0(OnCallbackDestroyed, void()); | 
| @@ -61,7 +66,7 @@ class MockFilterCallback { | 
| // destroyed.  Clients should use NiceMock<> or StrictMock<> depending on the | 
| // test. | 
| FilterCallback* NewCallback() { | 
| -    return new CallbackImpl(this); | 
| +    return new CallbackImpl(this, run_destroy_callback_); | 
| } | 
|  | 
| private: | 
| @@ -69,12 +74,15 @@ class MockFilterCallback { | 
| // MockFilterCallback. | 
| class CallbackImpl : public CallbackRunner<Tuple0> { | 
| public: | 
| -    explicit CallbackImpl(MockFilterCallback* mock_callback) | 
| -        : mock_callback_(mock_callback) { | 
| +    explicit CallbackImpl(MockFilterCallback* mock_callback, | 
| +                          bool run_destroy_callback) | 
| +        : mock_callback_(mock_callback), | 
| +          run_destroy_callback_(run_destroy_callback) { | 
| } | 
|  | 
| virtual ~CallbackImpl() { | 
| -      mock_callback_->OnCallbackDestroyed(); | 
| +      if (run_destroy_callback_) | 
| +        mock_callback_->OnCallbackDestroyed(); | 
| } | 
|  | 
| virtual void RunWithParams(const Tuple0& params) { | 
| @@ -83,13 +91,41 @@ class MockFilterCallback { | 
|  | 
| private: | 
| MockFilterCallback* mock_callback_; | 
| +    bool run_destroy_callback_; | 
|  | 
| DISALLOW_COPY_AND_ASSIGN(CallbackImpl); | 
| }; | 
|  | 
| +  bool run_destroy_callback_; | 
| DISALLOW_COPY_AND_ASSIGN(MockFilterCallback); | 
| }; | 
|  | 
| +class MockFilter : public Filter { | 
| + public: | 
| +  MockFilter(); | 
| +  MockFilter(bool requires_message_loop); | 
| + | 
| +  // Filter implementation. | 
| +  virtual bool requires_message_loop() const; | 
| +  virtual const char* message_loop_name() const; | 
| + | 
| +  MOCK_METHOD1(Play, void(FilterCallback* callback)); | 
| +  MOCK_METHOD1(Pause, void(FilterCallback* callback)); | 
| +  MOCK_METHOD1(Flush, void(FilterCallback* callback)); | 
| +  MOCK_METHOD1(Stop, void(FilterCallback* callback)); | 
| +  MOCK_METHOD1(SetPlaybackRate, void(float playback_rate)); | 
| +  MOCK_METHOD2(Seek, void(base::TimeDelta time, FilterCallback* callback)); | 
| +  MOCK_METHOD0(OnAudioRendererDisabled, void()); | 
| + | 
| + protected: | 
| +  virtual ~MockFilter(); | 
| + | 
| + private: | 
| +  bool requires_message_loop_; | 
| + | 
| +  DISALLOW_COPY_AND_ASSIGN(MockFilter); | 
| +}; | 
| + | 
| class MockDataSource : public DataSource { | 
| public: | 
| MockDataSource() {} | 
|  |