Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: media/base/android/mock_android_overlay.cc

Issue 2813303003: Add AndroidVideoSurfaceChooser to manage overlays. (Closed)
Patch Set: removed most weak factories Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "media/base/android/mock_android_overlay.h"
6
7 #include "base/bind.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace media {
11
12 MockAndroidOverlay::Callbacks::Callbacks() = default;
13 MockAndroidOverlay::Callbacks::Callbacks(const Callbacks&) = default;
14 MockAndroidOverlay::Callbacks::~Callbacks() = default;
15
16 MockAndroidOverlay::MockAndroidOverlay() : weak_factory_(this) {}
17
18 MockAndroidOverlay::~MockAndroidOverlay() {
19 if (!destruction_cb_.is_null())
20 destruction_cb_.Run();
21 }
22
23 void MockAndroidOverlay::SetConfig(const Config& config) {
24 config_ = config;
25 }
26
27 MockAndroidOverlay::Callbacks MockAndroidOverlay::GetCallbacks() {
28 Callbacks c;
29 c.OverlayReady =
30 base::Bind(&MockAndroidOverlay::CallbackTrampoline,
31 &MockAndroidOverlay::OnOverlayReady, GetWeakPtr());
32 c.OverlayFailed =
33 base::Bind(&MockAndroidOverlay::CallbackTrampoline,
34 &MockAndroidOverlay::OnOverlayFailed, GetWeakPtr());
35 c.SurfaceDestroyed =
36 base::Bind(&MockAndroidOverlay::CallbackTrampoline,
37 &MockAndroidOverlay::OnSurfaceDestroyed, GetWeakPtr());
38
39 return c;
40 }
41
42 void MockAndroidOverlay::SetDestructionCallback(
43 const base::Closure& destruction_cb) {
44 destruction_cb_ = destruction_cb;
45 }
46
47 bool MockAndroidOverlay::CallbackTrampoline(
48 void (MockAndroidOverlay::*cb)(),
49 base::WeakPtr<MockAndroidOverlay> wp) {
50 MockAndroidOverlay* overlay = wp.get();
51 if (!overlay)
52 return false;
53
54 (overlay->*cb)();
55
56 return true;
57 }
58
59 void MockAndroidOverlay::OnOverlayReady() {
60 config_.ready_cb.Run(this);
61 }
62
63 void MockAndroidOverlay::OnOverlayFailed() {
64 config_.failed_cb.Run(this);
65 }
66
67 void MockAndroidOverlay::OnSurfaceDestroyed() {
68 config_.destroyed_cb.Run(this);
69 }
70
71 base::WeakPtr<MockAndroidOverlay> MockAndroidOverlay::GetWeakPtr() {
72 return weak_factory_.GetWeakPtr();
73 }
74
75 MockAndroidOverlay::DestructionObserver::DestructionObserver(
76 MockAndroidOverlay* overlay)
77 : weak_factory_(this) {
78 overlay->SetDestructionCallback(
79 base::Bind(&MockAndroidOverlay::DestructionObserver::OnOverlayDestroyed,
80 weak_factory_.GetWeakPtr()));
81 }
82
83 MockAndroidOverlay::DestructionObserver::~DestructionObserver() {}
84
85 std::unique_ptr<MockAndroidOverlay::DestructionObserver>
86 MockAndroidOverlay::CreateDestructionObserver() {
87 return std::unique_ptr<MockAndroidOverlay::DestructionObserver>(
88 new DestructionObserver(this));
89 }
90
91 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698