blob: 464adde5f09374600540dc26b69b9a137afb9298 [file] [log] [blame]
// Copyright 2019 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 UI_BASE_MPRIS_MPRIS_SERVICE_H_
#define UI_BASE_MPRIS_MPRIS_SERVICE_H_
#include <string>
#include "base/component_export.h"
#include "base/strings/string16.h"
namespace mpris {
class MprisServiceObserver;
COMPONENT_EXPORT(MPRIS) extern const char kMprisAPIServiceNamePrefix[];
COMPONENT_EXPORT(MPRIS) extern const char kMprisAPIObjectPath[];
COMPONENT_EXPORT(MPRIS) extern const char kMprisAPIInterfaceName[];
COMPONENT_EXPORT(MPRIS) extern const char kMprisAPIPlayerInterfaceName[];
// A D-Bus service conforming to the MPRIS spec:
// https://specifications.freedesktop.org/mpris-spec/latest/
class COMPONENT_EXPORT(MPRIS) MprisService {
public:
enum class PlaybackStatus {
kPlaying,
kPaused,
kStopped,
};
// Returns the singleton instance, creating if necessary.
static MprisService* GetInstance();
// Starts the DBus service.
virtual void StartService() = 0;
virtual void AddObserver(MprisServiceObserver* observer) = 0;
virtual void RemoveObserver(MprisServiceObserver* observer) = 0;
// Setters for properties.
virtual void SetCanGoNext(bool value) = 0;
virtual void SetCanGoPrevious(bool value) = 0;
virtual void SetCanPlay(bool value) = 0;
virtual void SetCanPause(bool value) = 0;
virtual void SetPlaybackStatus(PlaybackStatus value) = 0;
virtual void SetTitle(const base::string16& value) = 0;
virtual void SetArtist(const base::string16& value) = 0;
virtual void SetAlbum(const base::string16& value) = 0;
// Returns the generated service name.
virtual std::string GetServiceName() const = 0;
protected:
virtual ~MprisService();
};
} // namespace mpris
#endif // UI_BASE_MPRIS_MPRIS_SERVICE_H_