New issue
Advanced search Search tips

Issue 762308 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Oct 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 2
Type: Bug



Sign in to add a comment

mash: System tray network proxy gear icon does not work

Project Member Reported by jamescook@chromium.org, Sep 5 2017

Issue description

Pixel 1 ("link") with ToT chrome r499741 and OS 9914.

* Add --mash to /etc/chrome_dev.conf, start ui
* At login screen, click on system tray menu
* Go to networking section, click on gear

Nothing happens.

Some dialog or delegate must not be wired up properly.

Steven, this could also be a good first bug for mash.

 
Labels: M-64
Owner: steve...@chromium.org
Status: Assigned (was: Untriaged)
Yes it would :)

Cc: -steve...@chromium.org
Just FYI, still happens with r504699

I'll start looking into this one first thing next week.

Status: Started (was: Assigned)
This appears to be failing because the host window is incorrect for mash. Specifically LoginDisplayHostImpl::GetNativeWindow() does not appear to be providing the correct window.

The window is opened here:
https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/ui/login_display_host_impl.cc?type=cs&q=OpenInternetDetailDialog&l=632

We do something special for mash for native views dialogs with SystemTrayClient::CreateUnownedDialogWidget(), but I will have to refresh my understanding of the relationship between gfx::NativeWindow and views::Widget.

FYI - ash and chrome browser have separate aura::Window hierarchies. So if there's code assuming it can set a widget aura::Window* parent in chrome code, and it's not another widget owned by chrome (e.g. it's a root window or an ash container), it won't work.

I'm not sure what to expect if the dialog parent is supposed to be a chrome window. That should work kinda like a JS dialog in Chrome for desktop platforms, by creating a widget that is a child of the main browser window.

I don't know the answer here, just rambling.

The dialog parent can be the current Ash desktop; the dialog is opened from the status tray. I just need to figure out where/how to fix that.


"The current ash desktop"? Do you mean the RootWindow for the current display?

If it's expecting to stick the window in a particular ash window container then it needs to set the Widget initparams for container id and display id like CreateUnownedDialogWidget does it.

If you're not already using it, --ash-debug-shortcuts + --ash-dev-shortcuts + Ctrl-Alt-Shift-W will dump the window hierarchy so you can see where the dialog ends up in classic ash.

HTH

I have a lot of catching up to do and I'm still mired in finishing up my current stuff, but if it helps expalin things:

We are opening the dialog from the system tray. I don't actually know what is supposed to host / parent it in Mash.

It occurs to me that having Chrome create a system tray dialog may be fundamentally problematic, so this may need to turn into "enable Ash to show Web UI". I'm not sure whether there is an intermediate step available.

It's OK for chrome to create windows/widgets in mash. It's nice if ash does it, but not required. The issue here is figuring out who hosts / parents the window. Chrome can create windows that are parented to other chrome windows. Ash can create windows that go anywhere (it has completely knowledge of the window hierarchy). If chrome needs to put a window in an arbitrary position, there are Widget::InitParams::mus_properties that let you do that, but chrome can't just pass an aura::Window* parent if it doesn't really own the parent.

HTH, we can chat later if you like, I just haven't looked at this particular dialog in detail.

Project Member

Comment 11 by bugdroid1@chromium.org, Oct 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8706ae035f109dc32dbc48f104b6385f7fe07d7c

commit 8706ae035f109dc32dbc48f104b6385f7fe07d7c
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Thu Oct 19 20:57:41 2017

Deprecate NOTIFICATION_LOGIN_PROXY_CHANGED

This cleanup has two purposes:
1. Elininates a chrome NotificationType which is deprecated.
2. Simplifies proxy config (now internet details) dialog and
   removes an awkward and imprecise relationship where a UI
   action (closing the dialog) was triggering an event that
   can be better detected by observing changes to the model.

Bug:  762308 
Change-Id: I522cddffa19c31fb09f750e132a1e6b2b2b60ac3
Reviewed-on: https://chromium-review.googlesource.com/726263
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Alexander Alekseev <alemate@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510204}
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chrome_notification_types.h
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chromeos/login/ui/internet_detail_dialog.cc
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chromeos/login/ui/internet_detail_dialog.h
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chromeos/net/network_portal_detector_impl.cc
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chromeos/net/network_portal_detector_impl.h
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/chromeos/net/network_portal_detector_impl_unittest.cc
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/ui/webui/chromeos/login/enrollment_screen_handler.cc
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/ui/webui/chromeos/login/network_state_informer.cc
[modify] https://crrev.com/8706ae035f109dc32dbc48f104b6385f7fe07d7c/chrome/browser/ui/webui/chromeos/login/network_state_informer.h

Status: Fixed (was: Started)
Project Member

Comment 13 by bugdroid1@chromium.org, Oct 23 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6f4425ade0e3fff371f0d0b90f923140b45b7af7

commit 6f4425ade0e3fff371f0d0b90f923140b45b7af7
Author: Steven Bennetts <stevenjb@chromium.org>
Date: Mon Oct 23 18:06:06 2017

Create a common SystemWebDialogDelegate for system dialogs

This creates SystemWebDialogDelegate and uses it for both
IInternetConfigDialog and InternetDetailDialog.

In doing so it removes the InternetDetailDialog dependency on
LoginWebDialog which is not needed or desired for these dialogs
which can also be opened from the System Tray (from either the
login screen or while logged in).

This fixes a problem with how these were parented which prevents
them from opening in mash.

For chrome_web_ui_controller_factory.cc:
TBR=michaelpg@chromium.org

Bug:  762308 
Change-Id: I1aab155ece2b31e12b81a027df1e9eeb8873f166
Reviewed-on: https://chromium-review.googlesource.com/729221
Commit-Queue: Steven Bennetts <stevenjb@chromium.org>
Reviewed-by: Toni Barzic <tbarzic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#510848}
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/chromeos/BUILD.gn
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/chromeos/login/ui/captive_portal_window_proxy.cc
[delete] https://crrev.com/8bf6a886aad1c42210fd16f372097236db34c162/chrome/browser/chromeos/login/ui/internet_detail_dialog.cc
[delete] https://crrev.com/8bf6a886aad1c42210fd16f372097236db34c162/chrome/browser/chromeos/login/ui/internet_detail_dialog.h
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/chromeos/login/ui/webui_login_view.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/chromeos/status/network_menu.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/BUILD.gn
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/ash/system_tray_client.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/internet_config_dialog.cc
[modify] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/internet_config_dialog.h
[rename] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/internet_detail_dialog.cc
[add] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/internet_detail_dialog.h
[delete] https://crrev.com/8bf6a886aad1c42210fd16f372097236db34c162/chrome/browser/ui/webui/chromeos/internet_detail_dialog_ui.h
[add] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/system_web_dialog_delegate.cc
[add] https://crrev.com/6f4425ade0e3fff371f0d0b90f923140b45b7af7/chrome/browser/ui/webui/chromeos/system_web_dialog_delegate.h

Components: -Internals>MUS Internals>Services>WindowService

Sign in to add a comment