External display shows the old notification right after being connected with device |
|
Issue descriptionChrome Version: 73.0.3666.0 OS: CrOS What steps will reproduce the problem? (1) Connect the external display with device in extending mode. (2) Unplug the external display connected in step 1. It should show "Removed display XXXX" on internal display. (3) Connect the external display with device again. It should show "Extending screen to XXXX" on internal display. What is the expected result? It should show "Extending screen to XXXX" on the external display as well. What happens instead? It shows "Removed display XXXX" on the external display now.
,
Jan 17
(5 days ago)
Let me explain why it can happen. Consider of the situation that there is already a notification popup with contents of "Remove display XXX", called Popup A, shown on the internal display. It is expected that after connecting an external display, both internal and external displays show notification popup with contents of "Extending screen to XXX", called Popup B. In fact, when an external display is connected, MessagePopupCollection for external display is created. Then AshPopupAlignmentDelegate::OnDisplayMetricsChanged is called, which will finally call MessagePopupCollection::Update to show the popup A on the external display. Then MessageCenterImpl::RemoveNotification is called. However, it fails to close the popup A on the external display because at this moment MessagePopupCollection of the external display is still in animation. Later when the popup B is created, MessagePopupCollection::AddPopup does not work. Because the popup A and popup B share the same notification id (chrome://settings/display). It is the reason why the old notification shows on the external display. |
|
►
Sign in to add a comment |
|
Comment 1 Deleted