It looks to me that, for the shake of matching the expected AGL user experience, we should not spawn new windows in this case, and we should do something similar to what is done in webOS, where all the popups are run in main window.
In chromium53 tree, you can look for BROWSER_COMMON guards, that include all the fixes for single window mode (among other things). On chromium68, same changes are guarded under OS_WEBOS.
Ideally we should check in runtime. I.e. if we are using ivi shell, then we should run in single window mode. Though, a build variable should be enough (i.e. use_single_window that defines USE_SINGLE_WINDOW).
It's crashed when the browser app opens popup menu through the 3-dot menu button.
Steps:
1) Click the browser icon from AGL home screen.
2) Click the 3-dot menu button -> crashed.
It has DCHECK error with 'Check failed: !connection->ivi_shell(). There must be no popup windows created when ivi shell is used'.
The callstack is below.
Dec 11 03:22:40 m3ulcb afbd-browser@b1d3489-dirty[4881]: [4885:4885:1211/032239.742113:FATAL:wayland_window.cc(54)] Check failed: !connection ->ivi_shell(). There must be no popup windows created when ivi shell is used
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #0 0xffffa7e8d948 base::debug::StackTrace::StackTrace()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #1 0xffffa7dfa250 logging::LogMessage::~LogMessage()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #2 0xffffa63b1f7c <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #3 0xffffa63b2f28 <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #4 0xffffa63a1e44 <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #5 0xffffa911a930 aura::WindowTreeHostPlatform::CreateAndSetPlatformWindow()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #6 0xffffabb361c4 views::DesktopWindowTreeHostPlatform::Init()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #7 0xffffabb314a4 views::DesktopNativeWidgetAura::InitNativeWidget()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #8 0xffffabb180a4 views::Widget::Init()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #9 0xffffabac7fec <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #10 0xffffabad08a8 views::SubmenuView::ShowAt()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #11 0xffffabac053c views::MenuController::OpenMenuImpl()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #12 0xffffabac0640 views::MenuController::OpenMenu()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #13 0xffffabac2024 views::MenuController::CommitPendingSelection()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #14 0xffffabac22a8 views::MenuController::SetSelection()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #15 0xffffabac24f4 views::MenuController::Run()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #16 0xffffabacf5dc views::internal::MenuRunnerImpl::RunMenuAt()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #17 0xffffac6a8718 <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #18 0xffffac6ada14 <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #19 0xffffac6b30a4 <unknown>
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #20 0xffffabab6af8 views::MenuButton::Activate()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #21 0xffffabab6de4 views::MenuButton::OnMousePressed()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #22 0xffffabb05fb4 views::View::ProcessMousePressed()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #23 0xffffabb06ba8 views::View::OnMouseEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #24 0xffffabaa21b4 views::InkDropHostView::OnMouseEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #25 0xffffa88a91c4 ui::ScopedTargetHandler::OnEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #26 0xffffa88a61f8 ui::EventDispatcher::DispatchEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #27 0xffffa88a68ac ui::EventDispatcher::ProcessEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #28 0xffffa88a6980 ui::EventDispatcherDelegate::DispatchEventToTarget()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #29 0xffffa88a6a74 ui::EventDispatcherDelegate::DispatchEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #30 0xffffabb13618 views::internal::RootView::OnMousePressed()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #31 0xffffabb18d9c views::Widget::OnMouseEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #32 0xffffa88a61f8 ui::EventDispatcher::DispatchEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #33 0xffffa88a68ac ui::EventDispatcher::ProcessEvent()
Dec 11 03:22:40 m3ulcb afbd-browser@-b1d3489-dirty[4881]: #34 0xffffa88a6980 ui::EventDispatcherDelegate::DispatchEventToTarget()