| // Copyright 2017 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. |
| |
| #ifndef MEDIA_BASE_ANDROID_MOCK_ANDROID_OVERLAY_H_ |
| #define MEDIA_BASE_ANDROID_MOCK_ANDROID_OVERLAY_H_ |
| |
| #include "media/base/android/android_overlay.h" |
| |
| #include "base/callback.h" |
| #include "base/memory/weak_ptr.h" |
| #include "media/base/android/test_destruction_observable.h" |
| #include "testing/gmock/include/gmock/gmock.h" |
| |
| namespace media { |
| |
| // AndroidOverlay implementation that supports weak ptrs. |
| class MockAndroidOverlay : public testing::NiceMock<AndroidOverlay>, |
| public DestructionObservable { |
| public: |
| MockAndroidOverlay(); |
| |
| MockAndroidOverlay(const MockAndroidOverlay&) = delete; |
| MockAndroidOverlay& operator=(const MockAndroidOverlay&) = delete; |
| |
| ~MockAndroidOverlay() override; |
| |
| MOCK_METHOD1(ScheduleLayout, void(const gfx::Rect&)); |
| MOCK_CONST_METHOD0(GetJavaSurface, base::android::JavaRef<jobject>&()); |
| |
| // Set |config_|. Sometimes, it's convenient to do this after construction, |
| // especially if one must create the overlay before the factory provides it |
| // via CreateOverlay. That's helpful to set test expectations. |
| void SetConfig(AndroidOverlayConfig config); |
| |
| // Return the config, if any, so that tests can check it. |
| AndroidOverlayConfig* config() const { return config_.get(); } |
| |
| // Set of callbacks that we provide to control the overlay once you've handed |
| // off ownership of it. |
| struct Callbacks { |
| Callbacks(); |
| Callbacks(const Callbacks&); |
| ~Callbacks(); |
| |
| base::RepeatingClosure OverlayReady; |
| base::RepeatingClosure OverlayFailed; |
| base::RepeatingClosure SurfaceDestroyed; |
| base::RepeatingCallback<void(bool)> PowerEfficientState; |
| }; |
| |
| // Return callbacks that can be used to control the overlay. |
| Callbacks GetCallbacks(); |
| |
| MOCK_METHOD0(MockAddSurfaceDestroyedCallback, void()); |
| void AddSurfaceDestroyedCallback( |
| AndroidOverlayConfig::DestroyedCB cb) override; |
| |
| // Send callbacks. |
| void OnOverlayReady(); |
| void OnOverlayFailed(); |
| void OnSurfaceDestroyed(); |
| void OnPowerEfficientState(bool state); |
| |
| private: |
| // Initial configuration, mostly for callbacks. |
| std::unique_ptr<AndroidOverlayConfig> config_; |
| |
| base::WeakPtrFactory<MockAndroidOverlay> weak_factory_{this}; |
| }; |
| |
| } // namespace media |
| |
| #endif // MEDIA_BASE_ANDROID_MOCK_ANDROID_OVERLAY_H_ |