Bug 7126 (int-151586)

Summary: Notification messages not displayed when optional "category" not set
Product: [Maemo Official Platform] Desktop platform Reporter: Artem Prilutskiy <cyanide.burnout>
Component: HomeAssignee: unassigned <nobody>
Status: RESOLVED FIXED QA Contact: home-bugs
Severity: normal    
Priority: Low CC: andre_klapper
Version: 5.0/(1.2009.42-11)   
Target Milestone: 5.0/(10.2010.19-1)   
Hardware: N900   
OS: Maemo   

Description Artem Prilutskiy (reporter) 2009-12-18 23:17:26 UTC
SOFTWARE VERSION:
5.0/1.2009.42-11

EXACT STEPS LEADING TO PROBLEM: 
1. Application calls org.freedesktop.Notifications.Notify on D-BUS without
defined  'category' hint.

EXPECTED OUTCOME:
Desktop application shows sended notification message.

ACTUAL OUTCOME:
Desktop application doesn't show sended notification message.
After first call all desktop widgets removes from screen permanently,
After severeal calls the device goes to reboot.

REPRODUCIBILITY:
always

EXTRA SOFTWARE INSTALLED:
Actual C++ packages including gtkmm, libhildonmm, gconfmm, hildon-notifymm

OTHER COMMENTS:
Problem not happens when optional 'category' hint defined. (
http://www.galago-project.org/specs/notification/0.9/x408.html#command-notify )

User-Agent:       Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-GB;
rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Comment 1 Andre Klapper maemo.org 2009-12-20 14:55:29 UTC
Thanks for reporting this.

Can you provide steps to reproduce this, so I can try too?
Also, how did you find out?
Comment 2 Artem Prilutskiy (reporter) 2009-12-20 17:01:36 UTC
(In reply to comment #1)
> Thanks for reporting this.
> 
> Can you provide steps to reproduce this, so I can try too?
> Also, how did you find out?
> 

Hi!

I wrote this code:

Glib::RefPtr<Hildon::Notification> notification =
Hildon::Notification::create("Test", "Test", Gtk::Stock::INFO);
std::auto_ptr<Glib::Error> error;
notification->show(error);

The result of execution is the situation that I reported.

After that I start to search what the difference between working system
notifications (missed calls for example) and mine:

Nokia-N900-42-11:~# dbus-monitor
interface=org.freedesktop.Notifications,member=Notify
signal sender=org.freedesktop.DBus -> dest=:1.453 serial=2
path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.453"
method call sender=:1.143 -> dest=org.freedesktop.Notifications serial=3760
path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;
member=Notify
   string ""
   uint32 0
   string "general_missed"
   string "+79036810073"
   string ""
   array [
   ]
   array [
      dict entry(
         string "urgency"
         variant             byte 1
      )
      dict entry(
         string "category"
         variant             string "missed-call"
      )
      dict entry(
         string "persistent"
         variant             byte 1
      )
   ]
   int32 -1
method call sender=:1.454 -> dest=org.freedesktop.Notifications serial=10
path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;
member=Notify
   string "Test"
   uint32 0
   string "gtk-info"
   string "Test"
   string "Test"
   array [
   ]
   array [
      dict entry(
         string "persistent"
         variant             byte 0
      )
   ]
   int32 -1

There was only one key difference - my code doesn't generate 'category' hint.
After that I'd found original D-BUS's specifications for notifications (
http://www.galago-project.org/specs/notification/0.9/x408.html#command-notify )
to check this parameters for optionality.

After that I added 'category' hint to my code:

Glib::RefPtr<Hildon::Notification> notification =
Hildon::Notification::create("Test", "Test", Gtk::Stock::INFO,
"some-category");
std::auto_ptr<Glib::Error> error;
notification->show(error);

And checked the result:

Nokia-N900-42-11:~# dbus-monitor
interface=org.freedesktop.Notifications,member=Notify
method call sender=:1.454 -> dest=org.freedesktop.Notifications serial=10
path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications;
member=Notify
   string "Test"
   uint32 0
   string "gtk-info"
   string "Test"
   string "Test"
   array [
   ]
   array [
      dict entry(
         string "category"
         variant             string "some-category"
      )
      dict entry(
         string "persistent"
         variant             byte 0
      )
   ]
   int32 -1

So the test was passed and the bug was found.
Comment 3 Andre Klapper maemo.org 2009-12-21 22:37:30 UTC
Thanks!
Comment 4 Andre Klapper maemo.org 2010-01-12 18:14:11 UTC
This works fine in the internal version 2010.01-6, hence assuming that this has
been internally fixed in the meantime. A public update will be available in the
future.
Comment 5 Andre Klapper maemo.org 2010-03-15 20:54:16 UTC
Setting explicit PR1.2 milestone (so it's clearer in which public release the
fix will be available to users).

Sorry for the bugmail noise (you can filter on this message).