New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 781347 link

Starred by 1 user

Issue metadata

Status: WontFix
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 2
Type: Bug-Regression



Sign in to add a comment

Notifications no longer show in a bubble - they have their own separate window

Project Member Reported by lukasza@chromium.org, Nov 3 2017

Issue description

Chrome Version: 64.0.3253.3 (Official Build) dev (64-bit)
OS: Goobuntu Trusty
Windows manager: LXDE + OpenBox

What steps will reproduce the problem?
(1) Go to https://davidwalsh.name/demo/notifications-api.php
(2) Press "Show a Notification" button

What is the expected result?
A subtle bubble shows up in a bottom-right corner.

What happens instead?
- A new obnoxious dialog window shows up with Ok/Cancel buttons - see the attached screenshot which contains multiple of them.
- The dialog window is visible in the taskbar / on the window list.
 
Description: Show this description
I'll try bisecting in a moment.

This is really annoying (hangouts uses web notifications - I get a new dialog window for *every*, *single* message from the team chat...).
For reference attaching how the old notification looked like.  In particular, I do notice a "settings" / "gear" icon that is missing in the new dialog window.
Old Web Notification Bubble.png
5.3 KB View Download
Bisecting didn't work - I only get "good" behavior between r509944 and r513639.  Notifications don't work in incognito mode, so I can't check that.

FWIW, below is the list of experiments I am in:

c134752e-b8b72c88
61fba06-ca7d8d80
1e528f0f-15305a2
b130ecb8-2e32ee7e
ca05d627-3f4a17df
7c1bc906-6790560b
47e5d3db-3d47f4f4
1210a805-ecd831c
34d450b1-3f4a17df
79616653-3f4a17df
19c1fdaf-3f4a17df
3042ad4b-cf4f6ead
591576c8-ace4e138
44c96c7b-f23d1dea
57f575bb-3f4a17df
2e5ffa4b-f23d1dea
b72f69e9-3f4a17df
4b61504a-e8b77cbe
9773d3bd-7c7ea110
93731dca-e89d496c
8fa604e0-f23d1dea
99144bc3-c3f822de
9e5c75f1-3c439a48
f79cb77b-3f4a17df
4ea303a6-759f970c
d92562a9-ca7d8d80
90bcbadc-7737cf5f
25fc488a-f23d1dea
1aecb842-f23d1dea
1bced4a3-7f6272b7
4932440-f23d1dea
757a5d98-ca7d8d80
6e6e1048-3f4a17df
b2f0086-870290a7
ef25c1eb-3f4a17df
4bc337ce-66edfe5b
3ac60855-3ec2a267
f296190c-6e3b1976
4442aae2-75cb33fc
ed1d377-e1cc0f14
75f0f0a0-a5822863
e2b18481-a90023b1
e7e71889-e1cc0f14
f5fff3a2-f23d1dea
41aa6aaa-da82a76f
f141d4bc-65bced95
e9ce63c1-5bda69fd
81c6897f-2d9ebb2e
da4aaa01-3f4a17df
Attaching again the screenshot of the new behavior (for some reason I can't find it in the bug's original descritpion).
Web Notification Dialog Window.png
63.0 KB View Download
Cc: -danakj@chromium.org a-...@yandex-team.ru
This is a UI change right? Should it go to the UX folks, or whomever works in this area?
FWIW, I can't repro after restarting.  I am still on 64.0.3253.3, but obviously the finch hashes changed.  I see that the following ones were present only when the problem was still reproing:

44c96c7b-f23d1dea
4ea303a6-759f970c
6e6e1048-3f4a17df
9773d3bd-7c7ea110
e9ce63c1-5bda69fd

OTOH, the experiments above don't seem related in any way to web notifications or UI.
Components: UI>Shell>UtilityWindows UI>Shell>WindowManager
Since I can't repro anymore, it is probably okay to resolve as WontFix?

Comment 9 by peter@chromium.org, Nov 3 2017

Cc: hwi@chromium.org owe...@chromium.org
Owner: thomasanderson@chromium.org
Status: Available (was: Untriaged)
That looks incredible. Tom, I guess this is what we're going to give LXDE + OpenBox users?

For the record, we're switching to native notifications on Linux. See Issue 773790. You'll continue to be able to disable it through chrome://flags.
Oh my, those cancel and OK buttons O_O

I installed openbox/lxde and my notifications look ok, they're definitely not dialogs.  You said that you cannot repro any more, does that mean your system is using chrome notifications again, or that the system notification server is doing something reasonable now?

If it's the former, please try reenabling native notifications (search for "native notifications" in chrome://flags), install d-feet, run it, click on "session bus", search for "org.freedesktop.Notifications" and tell me what it says under cmd.
RE: #c10

I have opted into native notifications via chrome://flags/#enable-native-notifications and everything looks ok (i.e. I get the old kind of notification bubble - like the one I attached to #c3).  I don't know what changed or what caused the problematic behavior back when I could repro... :-/

xprop shows the following for the (properly looking) notification bubble:
$ xprop
_NET_WM_USER_TIME(CARDINAL) = 0
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified location: 1905, 1110
XdndAware(ATOM) = BITMAP
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x0, 0x0, 0x0, 0x0
_NET_WM_ICON(CARDINAL) = 	Icon (64 x 64):
...
WM_WINDOW_ROLE(STRING) = "popup"
_NET_WM_STATE(ATOM) = _NET_WM_STATE_SKIP_TASKBAR, _NET_WM_STATE_ABOVE
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NOTIFICATION
_NET_WM_PID(CARDINAL) = 89238
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "lukasza-dev.kir.corp.google.com"
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, _NET_WM_PING

FWIW, despite no repro, I still tried to install d-feet and I did find org.freedesktop.Notifications but 1) I don't know where to look for "cmd", 2) GetServerInformation gives me back "notify-osd" and 3) Introspect gives me back:

<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
  <interface name="org.freedesktop.DBus.Introspectable">
    <method name="Introspect">
      <arg name="data" direction="out" type="s"/>
    </method>
  </interface>
  <interface name="org.freedesktop.DBus.Properties">
    <method name="Get">
      <arg name="interface" direction="in" type="s"/>
      <arg name="propname" direction="in" type="s"/>
      <arg name="value" direction="out" type="v"/>
    </method>
    <method name="Set">
      <arg name="interface" direction="in" type="s"/>
      <arg name="propname" direction="in" type="s"/>
      <arg name="value" direction="in" type="v"/>
    </method>
    <method name="GetAll">
      <arg name="interface" direction="in" type="s"/>
      <arg name="props" direction="out" type="a{sv}"/>
    </method>
  </interface>
  <interface name="org.freedesktop.Notifications">
    <method name="GetServerInformation">
      <arg name="return_name" type="s" direction="out"/>
      <arg name="return_vendor" type="s" direction="out"/>
      <arg name="return_version" type="s" direction="out"/>
      <arg name="return_spec_version" type="s" direction="out"/>
    </method>
    <method name="GetCapabilities">
      <arg name="return_caps" type="as" direction="out"/>
    </method>
    <method name="CloseNotification">
      <arg name="id" type="u" direction="in"/>
    </method>
    <method name="Notify">
      <arg name="app_name" type="s" direction="in"/>
      <arg name="id" type="u" direction="in"/>
      <arg name="icon" type="s" direction="in"/>
      <arg name="summary" type="s" direction="in"/>
      <arg name="body" type="s" direction="in"/>
      <arg name="actions" type="as" direction="in"/>
      <arg name="hints" type="a{sv}" direction="in"/>
      <arg name="timeout" type="i" direction="in"/>
      <arg name="return_id" type="u" direction="out"/>
    </method>
  </interface>
</node>

Not sure if there is anything more that can be done for this bug?
Status: WontFix (was: Available)
Thanks, that's the info I needed.  You're using Notify OSD, which doesn't have support for actions (but when you give it an action anyway, it uses those horrible looking dialogs).

The correct behavior is to fallback to using Chrome notifications for this notification server, so glad to hear that's working now.  I guess Notify OSD must have bugged out somehow and said that it supported actions?  Or maybe you accidentally had 2 notification servers running at once, one that supported actions and one that didn't?  Either way, there's nothing Chrome can do in those cases, so I'm closing this issue out.
This behavior came back today, after a reboot.

Using d-feet I see:

- org.freedesktop.Notifications.GetServerInformation returns: "notify-osd"

- org.freedesktop.Notifications.GetCapabilities returns: ['body', 'body-markup', 'icon-static', 'image/svg+xml', 'x-canonical-private-synchronous', 'x-canonical-append', 'x-canonical-private-icon-only', 'x-canonical-truncation', 'private-synchronous', 'append', 'private-icon-only', 'truncation']

- I don't know how to execute DBug.Properties.GetAll(String interface) - I don't know how and what to specify as the argument.


Let me try restarting Chrome.  I bet it will heal itself this way...
Very odd.  Your GetCapabilities call shows that notify-osd doesn't support actions, but we blacklist this case https://cs.chromium.org/chromium/src/chrome/browser/notifications/notification_platform_bridge_linux.cc?l=458

Is it possible that notify-osd really is returning that actions are supported to chrome?  I really want to get to the bottom of this.  Could you try running
$ dbus-monitor --session "interface='org.freedesktop.Notifications'"
which will spy on all dbus notification traffic.  While this is active, restart chrome a few times until you get a good run and a bad run, so that we can compare if there's any difference.
Yup - this has healed itself after Chrome restart.
Status: Assigned (was: WontFix)
thomasanderson@ - is this still a WontFix in light of #c14 and #c15?  Just double-checking / I am not familiar with this area at all.  The fact that this issue goes away after restarting Chrome might indicate that this is a problem within Chrome after all, right?
It's definitely possible.  But I think what's more likely is Chrome is started with a notification server that supports actions, which gets replaced by notifyosd (or notifyosd is even running at the same time as a different notification server).

But I cannot reproduce this, so there's not much I can do right now.  Could you try the debugging from c#14?  You don't have to restart your chrome session to do the debugging.  You can launch with google-chrome-unstable --user-data-dir=/tmp/test
So - here is what I did:

1. Reboot
2. Don't launch Chrome yet
3. Run: $ dbus-monitor --session "interface='org.freedesktop.Notifications'" 2>&1 | tee ~/scratch/dbus.out
4. In parallel, launch Chrome: $ google-chrome-unstable --user-data-dir=$HOME/.chrome-notifications4
5. Navigate to https://davidwalsh.name/demo/notifications-api.php
6. Trigger a notification
7. Approve notifications in Chrome
8. Trigger a notification again

At this point A) the problem [ugly dialogs] reproed and B) the output from dbus looked as follows:

signal sender=org.freedesktop.DBus -> dest=:1.37 serial=2 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=NameAcquired
   string ":1.37"
method call sender=:1.40 -> dest=org.freedesktop.Notifications serial=3 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetCapabilities
method call sender=:1.40 -> dest=org.freedesktop.Notifications serial=8 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Google Chrome"
   uint32 0
   string "file:///tmp/.com.google.Chrome.WE435M"
   string "Title"
   string "<a href="https://davidwalsh.name/">davidwalsh.name</a>

I am the body text!"
   array [
      string "default"
      string "Activate"
      string "settings"
      string "Settings"
   ]
   array [
      dict entry(
         string "urgency"
         variant             uint32 1
      )
      dict entry(
         string "desktop-entry"
         variant             string "google-chrome-unstable"
      )
   ]
   int32 -1
method call sender=:1.40 -> dest=org.freedesktop.Notifications serial=9 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Google Chrome"
   uint32 0
   string "file:///tmp/.com.google.Chrome.WE435M"
   string "Title"
   string "<a href="https://davidwalsh.name/">davidwalsh.name</a>

I am the body text!"
   array [
      string "default"
      string "Activate"
      string "settings"
      string "Settings"
   ]
   array [
      dict entry(
         string "urgency"
         variant             uint32 1
      )
      dict entry(
         string "desktop-entry"
         variant             string "google-chrome-unstable"
      )
   ]
   int32 -1
method call sender=:1.40 -> dest=org.freedesktop.Notifications serial=10 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify
   string "Google Chrome"
   uint32 0
   string "file:///tmp/.com.google.Chrome.WE435M"
   string "Title"
   string "<a href="https://davidwalsh.name/">davidwalsh.name</a>

I am the body text!"
   array [
      string "default"
      string "Activate"
      string "settings"
      string "Settings"
   ]
   array [
      dict entry(
         string "urgency"
         variant             uint32 1
      )
      dict entry(
         string "desktop-entry"
         variant             string "google-chrome-unstable"
      )
   ]
   int32 -1

What I did next was:
9. Exit Chrome (including closing the dialogs :-/)
10. Launch Chrome again: $ google-chrome-unstable --user-data-dir=$HOME/.chrome-notifications4
11. Navigate to https://davidwalsh.name/demo/notifications-api.php
12. Trigger a notification

This time A) the notification showed in a nice bubble and B) the following extra output of dbus was emitted (omitting previous output):

method call sender=:1.55 -> dest=org.freedesktop.Notifications serial=3 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetCapabilities


Let me try rebooting one more time and manually executing GetCapabilities via d-feet.
After a reboot, I did the following:

1. d-feet shows that

    - Notifications.GetCapabilities() returns ['actions', 'body', 'body-hyperlinks', 'body-markup', 'icon-static', 'sound', 'persistence', 'action-icons']

    - Notifications.GetServerInformation() returns "Notification Daemon"

2. This time after triggerring a notification I got a different looking bubble (black, quite big, top-right corner) than usual (white, small, bottom-right corner).  No screenshot because the bubble disappeared relatively fast.

3. The second time I triggerred a notification, I got the ugly dialog.

4. d-feet not shows that

    - Notifications.GetCapabilities() returns ['body', 'body-markup', 'icon-static', 'image/svg+xml', 'x-canonical-private-synchronous', 'x-canonical-append', 'x-canonical-private-icon-only', 'x-canonical-truncation', 'private-synchronous', 'append', 'private-icon-only', 'truncation']

    - Notifications.GetServerInformation() returns "notify-osd"



I have no idea what I wrote above means :-)
Status: WontFix (was: Assigned)
Ah, that would explain it.  You really do have 2 notification daemons running.  The odd one is notification-daemon https://github.com/GNOME/notification-daemon which is usually used on GNOME flashback.  You can get rid of it with
$ sudo apt-get remove notification-daemon

The good news is that this is definitely not a Chrome bug, so I'm WontFix'ing this again.

Sign in to add a comment