Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do not export alarm properties on D-Bus #104

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 0 additions & 48 deletions data/org.ayatana.indicator.datetime.AlarmProperties.xml

This file was deleted.

3 changes: 0 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ set (SERVICE_CXX_SOURCES
# generated sources
include (GdbusCodegen)
set(SERVICE_GENERATED_SOURCES)
add_gdbus_codegen(SERVICE_GENERATED_SOURCES dbus-alarm-properties
org.ayatana.indicator
${CMAKE_SOURCE_DIR}/data/org.ayatana.indicator.datetime.AlarmProperties.xml)

if (ENABLE_LOMIRI_FEATURES)
add_gdbus_codegen(SERVICE_GENERATED_SOURCES dbus-accounts-sound
Expand Down
26 changes: 2 additions & 24 deletions src/exporter.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/*
* Copyright 2013 Canonical Ltd.
* Copyright 2021 Robert Tari
* Copyright 2021-2023 Robert Tari
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
Expand All @@ -22,8 +22,6 @@
#include <datetime/dbus-shared.h>
#include <datetime/exporter.h>

#include "dbus-alarm-properties.h"

#include <glib/gi18n.h>
#include <gio/gio.h>

Expand All @@ -40,10 +38,8 @@ class Exporter::Impl
public:

explicit Impl(const std::shared_ptr<Settings>& settings):
m_settings(settings),
m_alarm_props(datetime_alarm_properties_skeleton_new())
m_settings(settings)
{
alarm_properties_init();
}

~Impl()
Expand All @@ -57,9 +53,6 @@ class Exporter::Impl
g_dbus_connection_unexport_action_group(m_bus, m_exported_actions_id);
}

g_dbus_interface_skeleton_unexport(G_DBUS_INTERFACE_SKELETON(m_alarm_props));
g_clear_object(&m_alarm_props);

if (m_own_id)
g_bus_unown_name(m_own_id);

Expand Down Expand Up @@ -140,16 +133,6 @@ class Exporter::Impl
});
}


void alarm_properties_init()
{
bind_uint_property(m_alarm_props, "duration", m_settings->alarm_duration);
bind_uint_property(m_alarm_props, "default-volume", m_settings->alarm_volume);
bind_string_property(m_alarm_props, "default-sound", m_settings->alarm_sound);
bind_string_property(m_alarm_props, "haptic-feedback", m_settings->alarm_haptic);
bind_uint_property(m_alarm_props, "snooze-duration", m_settings->snooze_duration);
}

/***
****
***/
Expand All @@ -168,10 +151,6 @@ class Exporter::Impl

// export the alarm properties
GError * error = nullptr;
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(m_alarm_props),
m_bus,
BUS_DATETIME_PATH"/AlarmProperties",
&error);

// export the actions
const auto id = g_dbus_connection_export_action_group(m_bus,
Expand Down Expand Up @@ -227,7 +206,6 @@ class Exporter::Impl
GDBusConnection* m_bus = nullptr;
std::shared_ptr<Actions> m_actions;
std::vector<std::shared_ptr<Menu>> m_menus;
DatetimeAlarmProperties* m_alarm_props = nullptr;
};


Expand Down
113 changes: 2 additions & 111 deletions tests/test-exporter.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
/*
* Copyright 2013 Canonical Ltd.
* Copyright 2023 Robert Tari
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
Expand All @@ -15,14 +16,13 @@
*
* Authors:
* Charles Kerr <[email protected]>
* Robert Tari <[email protected]>
*/

#include "actions-mock.h"
#include "state-mock.h"
#include "glib-fixture.h"

#include "dbus-alarm-properties.h"

#include <datetime/actions.h>
#include <datetime/dbus-shared.h>
#include <datetime/exporter.h>
Expand Down Expand Up @@ -142,112 +142,3 @@ TEST_F(ExporterFixture, Publish)
g_clear_object(&exported);
g_clear_object(&connection);
}

TEST_F(ExporterFixture, AlarmProperties)
{
/***
**** Set up the exporter
***/

std::shared_ptr<State> state(new MockState);
std::shared_ptr<Actions> actions(new MockActions(state));
std::shared_ptr<Settings> settings(new Settings);
std::vector<std::shared_ptr<Menu>> menus;

MenuFactory menu_factory (actions, state);
for(int i=0; i<Menu::NUM_PROFILES; i++)
menus.push_back(menu_factory.buildMenu(Menu::Profile(i)));

Exporter exporter(settings);
exporter.publish(actions, menus);
wait_msec();

/***
**** Set up the proxy
***/

auto on_proxy_ready = [](GObject*, GAsyncResult* res, gpointer gproxy){
GError* error = nullptr;
*reinterpret_cast<DatetimeAlarmProperties**>(gproxy) = datetime_alarm_properties_proxy_new_for_bus_finish(res, &error);
EXPECT_TRUE(error == nullptr);
};

DatetimeAlarmProperties* proxy = nullptr;
datetime_alarm_properties_proxy_new_for_bus(G_BUS_TYPE_SESSION,
G_DBUS_PROXY_FLAGS_NONE,
BUS_DATETIME_NAME,
BUS_DATETIME_PATH"/AlarmProperties",
nullptr,
on_proxy_ready,
&proxy);
wait_msec(100);
ASSERT_TRUE(proxy != nullptr);

/***
**** Try changing the Settings -- do the DBus properties change to match it?
***/

auto expected_volume = 1;
int expected_duration = 4;
int expected_snooze_duration = 5;
const char * expected_sound = "/tmp/foo.wav";
const char * expected_haptic = "pulse";
settings->alarm_volume.set(expected_volume);
settings->alarm_duration.set(expected_duration);
settings->snooze_duration.set(expected_snooze_duration);
settings->alarm_sound.set(expected_sound);
settings->alarm_haptic.set(expected_haptic);
wait_msec();

static constexpr const char* const SOUND_PROP {"default-sound"};
static constexpr const char* const VOLUME_PROP {"default-volume"};
static constexpr const char* const DURATION_PROP {"duration"};
static constexpr const char* const HAPTIC_PROP {"haptic-feedback"};
static constexpr const char* const SNOOZE_PROP {"snooze-duration"};

char* sound = nullptr;
char* haptic = nullptr;
int volume = -1;
int duration = -1;
int snooze = -1;
g_object_get(proxy, SOUND_PROP, &sound,
HAPTIC_PROP, &haptic,
VOLUME_PROP, &volume,
DURATION_PROP, &duration,
SNOOZE_PROP, &snooze,
nullptr);
EXPECT_STREQ(expected_sound, sound);
EXPECT_STREQ(expected_haptic, haptic);
EXPECT_EQ(expected_volume, volume);
EXPECT_EQ(expected_duration, duration);
EXPECT_EQ(expected_snooze_duration, snooze);

g_clear_pointer (&sound, g_free);
g_clear_pointer (&haptic, g_free);

/***
**** Try changing the DBus properties -- do the Settings change to match it?
***/

expected_volume = 100;
expected_duration = 30;
expected_sound = "/tmp/bar.wav";
expected_haptic = "none";
expected_snooze_duration = 5;
g_object_set(proxy, SOUND_PROP, expected_sound,
HAPTIC_PROP, expected_haptic,
VOLUME_PROP, expected_volume,
DURATION_PROP, expected_duration,
SNOOZE_PROP, expected_snooze_duration,
nullptr);
wait_msec();

EXPECT_STREQ(expected_sound, settings->alarm_sound.get().c_str());
EXPECT_STREQ(expected_haptic, settings->alarm_haptic.get().c_str());
EXPECT_EQ(expected_volume, settings->alarm_volume.get());
EXPECT_EQ(expected_duration, settings->alarm_duration.get());
EXPECT_EQ(expected_snooze_duration, settings->snooze_duration.get());

// cleanup
g_clear_object(&proxy);
}