Index: chrome/browser/media/router/mojo/media_route_controller.h |
diff --git a/chrome/browser/media/router/mojo/media_route_controller.h b/chrome/browser/media/router/mojo/media_route_controller.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2d0e1d03edf32c1acca8240a9178fab330e88580 |
--- /dev/null |
+++ b/chrome/browser/media/router/mojo/media_route_controller.h |
@@ -0,0 +1,53 @@ |
+// 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 CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTE_CONTROLLER_H_ |
+#define CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTE_CONTROLLER_H_ |
+ |
+#include "chrome/browser/media/router/media_route.h" |
+#include "chrome/browser/media/router/mojo/media_controller.mojom.h" |
+#include "chrome/browser/media/router/mojo/media_status.mojom.h" |
+#include "mojo/public/cpp/bindings/binding.h" |
+ |
+namespace media_router { |
+ |
+namespace mojom { |
+class MediaRouteProvider; |
+} |
+ |
+class MediaRouteStatusObserver; |
+ |
+class MediaRouteController : public mojom::MediaStatusObserver { |
+ public: |
+ MediaRouteController(MediaRoute::Id route_id, |
+ mojom::MediaRouteProvider* provider, |
+ base::Callback<void()> destroyer_callback); |
+ ~MediaRouteController() override; |
+ |
+ void OnControllerSet(bool success); |
+ |
+ void Play(); |
+ void Pause(); |
+ void Seek(uint32_t time); |
+ void SetMute(bool mute); |
+ void SetVolume(float volume); |
+ |
+ void AddObserver(MediaRouteStatusObserver* observer); |
+ void RemoveObserver(MediaRouteStatusObserver* observer); |
+ |
+ // mojom::MediaStatusObserver: |
+ void OnMediaStatusUpdated(mojom::MediaStatusPtr mojo_status) override; |
+ |
+ void OnDummyMediaStatusUpdated(); |
+ |
+ private: |
+ base::Callback<void()> destroyer_callback_; |
+ mojom::MediaControllerPtr media_controller_; |
+ std::unique_ptr<mojo::Binding<mojom::MediaStatusObserver>> binding_; |
+ std::unordered_set<MediaRouteStatusObserver*> observers_; |
+}; |
+ |
+} // namespace media_router |
+ |
+#endif // CHROME_BROWSER_MEDIA_ROUTER_MOJO_MEDIA_ROUTE_CONTROLLER_H_ |