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

Side by Side Diff: chrome/browser/media/router/mojo/media_route_controller.cc

Issue 2724513002: (Not for review) Dummy C++ side Custom Controls implementation (Closed)
Patch Set: . Created 3 years, 9 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 "chrome/browser/media/router/mojo/media_route_controller.h"
6
7 #include "chrome/browser/media/router/media_route_status_observer.h"
8 #include "chrome/browser/media/router/media_router.h"
9 #include "chrome/browser/media/router/media_status.h"
10 #include "chrome/browser/media/router/mojo/media_router.mojom.h"
11 #include "mojo/public/cpp/bindings/interface_request.h"
12
13 namespace media_router {
14
15 MediaRouteController::MediaRouteController(
16 MediaRoute::Id route_id,
17 mojom::MediaRouteProvider* provider,
18 base::Callback<void()> destroyer_callback)
19 : destroyer_callback_(destroyer_callback) {
20 provider->CreateMediaRouteController(
21 route_id, mojo::MakeRequest<mojom::MediaController>(&media_controller_),
22 base::Bind(&MediaRouteController::OnControllerSet,
23 base::Unretained(this)));
24 }
25 MediaRouteController::~MediaRouteController() {}
26
27 void MediaRouteController::OnControllerSet(bool success) {
28 if (success) {
29 mojom::MediaStatusObserverPtr observer;
30 binding_ = base::MakeUnique<mojo::Binding<mojom::MediaStatusObserver>>(
31 this, mojo::MakeRequest<mojom::MediaStatusObserver>(&observer));
32 binding_->set_connection_error_handler(destroyer_callback_);
33 media_controller_->SetObserver(std::move(observer));
34 } else {
35 destroyer_callback_.Run();
36 }
37 }
38
39 void MediaRouteController::Play() {
40 media_controller_->Play();
41 }
42
43 void MediaRouteController::Pause() {
44 media_controller_->Pause();
45 }
46
47 void MediaRouteController::Seek(uint32_t time) {
48 media_controller_->Seek(time);
49 }
50
51 void MediaRouteController::SetMute(bool mute) {
52 media_controller_->SetMute(mute);
53 }
54
55 void MediaRouteController::SetVolume(float volume) {
56 media_controller_->SetVolume(volume);
57 }
58
59 void MediaRouteController::AddObserver(MediaRouteStatusObserver* observer) {
60 observers_.insert(observer);
61 OnDummyMediaStatusUpdated();
62 }
63
64 void MediaRouteController::RemoveObserver(MediaRouteStatusObserver* observer) {
65 observers_.erase(observer);
66 if (observers_.empty()) {
67 destroyer_callback_.Run();
68 // |this| gets destroyed here!
69 }
70 }
71
72 void MediaRouteController::OnMediaStatusUpdated(
73 mojom::MediaStatusPtr mojo_status) {
74 // TODO(takumif): Add a typemap for MediaStatus.
75 MediaStatus status;
76 status.title = mojo_status->title;
77 status.status = mojo_status->status;
78 status.can_play_pause = mojo_status->can_play_pause;
79 status.can_mute = mojo_status->can_mute;
80 status.can_set_volume = mojo_status->can_set_volume;
81 status.can_seek = mojo_status->can_seek;
82 status.is_paused = mojo_status->is_paused;
83 status.is_muted = mojo_status->is_muted;
84 status.volume = mojo_status->volume;
85 status.duration = mojo_status->duration;
86 status.current_time = mojo_status->current_time;
87
88 for (MediaRouteStatusObserver* observer : observers_)
89 observer->OnMediaRouteStatusUpdated(status);
90 }
91
92 void MediaRouteController::OnDummyMediaStatusUpdated() {
93 MediaStatus status;
94 status.title = "Title from MRC";
95 status.status = "Status from MRC";
96 status.can_play_pause = true;
97 status.can_mute = true;
98 status.can_set_volume = true;
99 status.can_seek = true;
100 status.is_paused = true;
101 status.is_muted = true;
102 status.duration = 10000;
103 status.current_time = 5000;
104 status.volume = 0.7;
105
106 for (MediaRouteStatusObserver* observer : observers_)
107 observer->OnMediaRouteStatusUpdated(status);
108 }
109
110 } // namespace media_router
OLDNEW
« no previous file with comments | « chrome/browser/media/router/mojo/media_route_controller.h ('k') | chrome/browser/media/router/mojo/media_router.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698