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

Issue 630920 link

Starred by 6 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Regression : Color Picker window is seen blank

Project Member Reported by mm00333...@techmahindra.com, Jul 25 2016

Issue description

Version:  54.0.2806.0
OS: Ubuntu 14.04

What steps will reproduce the problem?
(1)Launch chrome -> Go to chrome://apps page
(2)Now press F12 to open Dev tools window -> In Elements section open color picker window and observe (please refer Video)

Expected:Color Picker window should not be seen blank
Actual: Instead Color Picker window is seen blank


This is Regression Issue broken in M-54
will provide Bisect info soon

 
Actual_ColorPicker.ogv
1.1 MB View Download
Able to reproduce the issue on Mac 10.11.5 using 54.0.2806.0.
Components: Platform>DevTools
Labels: -Needs-Bisect hasbisect
Owner: pfeldman@chromium.org
Status: Assigned (was: Unconfirmed)
Note:
1.Will update win behavior soon
2.Attaching Expected Video for reference

Manual good and Bad Builds:
Good Build: 54.0.2804.0
Bad Build:  54.0.2805.0

Below is the Tool Bisect Info:

CHANGELOG URL:
https://chromium.googlesource.com/chromium/src/+log/59441af612e4c6922a412b22a783cf8cae3cdcf6..4b34e4b56319572e06425dd77e4d3b30d86ce049

Suspecting https://codereview.chromium.org/2168223002  from changelog

@pfeldman : Please feel free to re-assign if its not related to your change
Actual_ColorPicker.png
187 KB View Download
Expected_ColorPicker.ogv
1.0 MB View Download
Expected_ColorPicker.png
219 KB View Download
Labels: OS-Windows
Issue is seen on Windows OS also
Labels: -ReleaseBlock-Stable ReleaseBlock-Beta
Adding Beta Blocker as this is a Recent Regression on M54.
Please feel free to remove if not required

Comment 5 by ajha@chromium.org, Jul 25 2016

Labels: OS-Mac
Can repro on Windows version 54.0.2805.0 canary, I can work on this issue.
After having a deep investigation, I found this bug have existed before the commit https://codereview.chromium.org/2168223002. But not being exposed. The root case is:
In function "reposition" of SwatchPopoverHelper, "showView" of Popover is called (https://cs.chromium.org/chromium/src/third_party/WebKit/Source/devtools/front_end/ui/SwatchPopoverHelper.js?q=SwatchPopoverHelper.js&sq=package:chromium&dr&l=73). So, when we want to re-position the widget, the "showView" is executed more then one time. I am planning to prepare 2 CLs to solve this problem.
(1) ensure we can only call the show function once (https://codereview.chromium.org/2186833002).
(2) add a new function to do the reposition, like the Dialog.js does.(https://cs.chromium.org/chromium/src/third_party/WebKit/Source/devtools/front_end/ui/Dialog.js?q=Dialog.js&sq=package:chromium&dr&l=118)

pfeldman@ what's your opinion? thanks!
Cc: flandy@google.com lushnikov@chromium.org
 Issue 631283  has been merged into this issue.
I noticed a CL was landed (https://codereview.chromium.org/2180853003), but it leads to another  issue 631890 . 

The root cause of these two issues (630920&631890) is that the Popover is to be shown more then one time. At the current logic, the previous Popover will be hidden first, then to show the new one, which means the previous one will be removed from the DOM tree directly without being notified (actually, the widget is the content of the popover, please seehttps://cs.chromium.org/chromium/src/third_party/WebKit/Source/devtools/front_end/ui/Popover.js?sq=package:chromium&dr&l=107). If these two popovers are different, everything is OK. But when the two popovers are exact the same one, the this._visible of this widget goes wrong. Even now we reparent the widget, that what the cl 2180853003 does, the status here (https://cs.chromium.org/chromium/src/third_party/WebKit/Source/devtools/front_end/ui/Widget.js?sq=package:chromium&dr&l=259) is still wrong. After being hidden, the this._visible should equal to "false", but the real value is "true", which results that this._processWillShow()&this._processWasShown() are never called.

The key is that we must call "hide()" of the Widget, if we want to hide it. We MUST prevent a widget from being removed directly, like this bug. My solution is simply and followed this principle. If the "show()" is called again when the widget is sill visible, just return. I think this behavior is reasonable and general. Please view the CL at https://codereview.chromium.org/2186833002

P.S. Another solution is that when the popover is being hidden, just call the content widget's hide method (we must keep a handle of the content widget), this will correct the internal visibility property in time.
Cc: caseq@chromium.org
Status: Fixed (was: Assigned)

Sign in to add a comment