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

Issue 850829 link

Starred by 8 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2018
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug-Regression



Sign in to add a comment

Blank bar above tabs in Chrome when switching displays on MacOS

Reported by michal.m...@gmail.com, Jun 8 2018

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.62 Safari/537.36

Steps to reproduce the problem:
1. Run chrome
2. Switch to external display
3. Disconnect external display

What is the expected behavior?
Chrome UI looks nice

What went wrong?
There's a big gray/empty/blank area above tabs. The only way to get rid of it I found is going full screen and back.

Restarting Chrome does not help - the issue comes back eventually.

Did this work before? Yes 

Chrome version: 67.0.3396.62  Channel: n/a
OS Version: OS X 10.13.5
Flash Version: 

Multiple people in our office seeing the same. But not all. 
Started happening ~1 month ago - maybe around Chrome 65? Was not happening before
 
chromebar.png
518 KB View Download
It looks semi-related to https://bugs.chromium.org/p/chromium/issues/detail?id=835296 - but that one got fixed in 67, but I am still seeing it in 67.
Cc: lgrey@chromium.org phanindra.mandapaka@chromium.org
Labels: Needs-Feedback Triaged-ET
Unable to reproduce the issue on reported version chrome 67.0.3396.62 using Mac 10.13.3.

Steps:
-----------
1. Enabled multi monitor set up on Mac
2. Launched chrome and moved one tab to second monitor.
3. Disabled the second monitor.
Observed that Chrome UI looks nice and there is no blank.

Cc'ing lgrey@ from  Issue 835296  for more inputs on this.

@reporter: Would it be possible to attach screen-cast of the behavior you are seeing?

Comment 3 by lgrey@chromium.org, Jun 8 2018

Cc: -lgrey@chromium.org
Owner: lgrey@chromium.org
Status: Assigned (was: Unconfirmed)
I can repro by making the window full height on the external monitor and downloading something (so the download bar is showing).

Comment 4 by lgrey@chromium.org, Jun 8 2018

Cc: sdy@chromium.org
+sdy@

The root cause here is that DownloadShelf is causing a relayout when the backing store changes (https://cs.chromium.org/chromium/src/chrome/browser/ui/cocoa/download/download_shelf_view_cocoa.mm?sq=package:chromium&dr&g=0&l=147)

This relayout sees the new content view frame and adjusts accordingly

But:

Later in the process of switching screens we see:
	2   AppKit                              0x00007fff4605bf19 -[NSView resizeSubviewsWithOldSize:] + 504
	3   AppKit                              0x00007fff4603a6f6 -[NSView setFrameSize:] + 1672
	4   AppKit                              0x00007fff460d9df9 -[NSWindow _oldPlaceWindow:] + 1006
	5   AppKit                              0x00007fff460d921a -[NSWindow _setFrameCommon:display:stashSize:] + 3108
	6   AppKit                              0x00007fff460d85e9 -[NSWindow _setFrame:display:allowImplicitAnimation:stashSize:] + 222
	7   AppKit                              0x00007fff460d8504 -[NSWindow setFrame:display:] + 67
	8   AppKit                              0x00007fff463529b8 -[NSWindow _adjustWindowToScreen] + 1728

Which adjusts everything as if the previous layout hadn't happened, and so, bumps everything down by Height(oldScreen) - Height(newScreen) 

sdy@ can you think of something less brute force than readjusting the height in this case? We'd need to merge back to 68, so ellyjones@ and I have already rejected trying to work around this some more complex way.

Comment 5 by sdy@chromium.org, Jun 8 2018

It looks like -viewDidChangeBackingProperties doesn't attempt to lay out anything other than the shelf itself. How does it end up affecting the rest of the window? I'm guessing that commenting it out doesn't help, though?

One quick option I can think of is to make the height *not* depend on the divider height: just size the shelf to `kMDShelfHeight`.

Comment 6 by sdy@chromium.org, Jun 8 2018

You might also try just doing `self.needsLayout = YES` in -viewDidMoveToWindow and -viewDidChangeBackingProperties, and then putting the actual height adjustment (the body of adjustHeightForDivider) in a -layout override.

Comment 7 by lgrey@chromium.org, Jun 11 2018

Re c#5

	2   libchrome_dll.dylib                 0x000000010998effa -[BrowserWindowController(Private) applyLayout:] + 570
	3   libchrome_dll.dylib                 0x000000010998a6e1 -[BrowserWindowController(Private) layoutSubviews] + 433
	4   libchrome_dll.dylib                 0x000000010997ace1 -[BrowserWindowController resizeView:newHeight:] + 2385
	5   libchrome_dll.dylib                 0x0000000109900ef8 -[AnimatableView setHeight:] + 88
	6   libchrome_dll.dylib                 0x00000001099d1d12 -[DownloadShelfView adjustHeightForDivider] + 306

Magic!

Comment 8 by sdy@chromium.org, Jun 11 2018

I see :/
Project Member

Comment 9 by bugdroid1@chromium.org, Jun 11 2018

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

commit b6a6f344bb8e4279c60f48e02caa7cbef461765b
Author: Leonard Grey <lgrey@chromium.org>
Date: Mon Jun 11 23:00:30 2018

Cocoa: don't adjust download shelf height to account for divider

Making this change during a screen transition causes a browser view
layout. However, AppKit appears to manually adjust subviews of views that
were resized due to a screen change, and does this using the former sizes.
This happens *after* layout is triggered in this case, causing the contents
of the view to be pushed down by the difference in height between displays.

Bug:  850829 
Change-Id: I53a0b03114fa9647c389595265211f5639a523a0
Reviewed-on: https://chromium-review.googlesource.com/1095322
Reviewed-by: Sidney San Martín <sdy@chromium.org>
Commit-Queue: Leonard Grey <lgrey@chromium.org>
Cr-Commit-Position: refs/heads/master@{#566189}
[modify] https://crrev.com/b6a6f344bb8e4279c60f48e02caa7cbef461765b/chrome/browser/ui/cocoa/download/download_shelf_view_cocoa.mm

Comment 10 by lgrey@chromium.org, Jun 12 2018

Labels: Merge-Request-68
Project Member

Comment 11 by sheriffbot@chromium.org, Jun 12 2018

Labels: -Merge-Request-68 Hotlist-Merge-Review Merge-Review-68
This bug requires manual review: M68 has already been promoted to the beta branch, so this requires manual review
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), kariahda@(iOS), bhthompson@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 12 by lgrey@chromium.org, Jun 14 2018

Cc: abdulsyed@chromium.org
+abdulsyed@

Abdul, we believe this is a very safe merge

Comment 13 by lgrey@chromium.org, Jun 14 2018

Cc: -abdulsyed@chromium.org gov...@chromium.org
Actually, +govind@, since it looks like Abdul is out
Cc: abdulsyed@chromium.org
Labels: -Merge-Review-68 Merge-Approved-68
Approving merge to M68 branch 3440 based on comment #12. Please merge. Thank you.
Project Member

Comment 15 by bugdroid1@chromium.org, Jun 14 2018

Labels: -merge-approved-68 merge-merged-3440
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3480b2a11f92e7fcf063ad5a4b1403a91b43413c

commit 3480b2a11f92e7fcf063ad5a4b1403a91b43413c
Author: Leonard Grey <lgrey@chromium.org>
Date: Thu Jun 14 15:06:51 2018

Cocoa: don't adjust download shelf height to account for divider

Making this change during a screen transition causes a browser view
layout. However, AppKit appears to manually adjust subviews of views that
were resized due to a screen change, and does this using the former sizes.
This happens *after* layout is triggered in this case, causing the contents
of the view to be pushed down by the difference in height between displays.

Bug:  850829 
Change-Id: I53a0b03114fa9647c389595265211f5639a523a0
Reviewed-on: https://chromium-review.googlesource.com/1095322
Reviewed-by: Sidney San Martín <sdy@chromium.org>
Commit-Queue: Leonard Grey <lgrey@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#566189}(cherry picked from commit b6a6f344bb8e4279c60f48e02caa7cbef461765b)
Reviewed-on: https://chromium-review.googlesource.com/1101097
Reviewed-by: Leonard Grey <lgrey@chromium.org>
Cr-Commit-Position: refs/branch-heads/3440@{#359}
Cr-Branched-From: 010ddcfda246975d194964ccf20038ebbdec6084-refs/heads/master@{#561733}
[modify] https://crrev.com/3480b2a11f92e7fcf063ad5a4b1403a91b43413c/chrome/browser/ui/cocoa/download/download_shelf_view_cocoa.mm

Issue 845953 has been merged into this issue.
Labels: Hotlist-ConOps

Comment 18 by lgrey@chromium.org, Jun 29 2018

Cc: susan.boorgula@chromium.org
 Issue 856252  has been merged into this issue.

Comment 19 by lgrey@chromium.org, Jun 29 2018

Status: Fixed (was: Assigned)
Cc: lgrey@chromium.org
 Issue 864289  has been merged into this issue.
 Issue 873276  has been merged into this issue.

Sign in to add a comment