Closed Bug 1189748 Opened 7 years ago Closed 6 years ago

The values of a google 3d graph can't be modified

Categories

(Core :: DOM: Events, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 1057858

People

(Reporter: cbadau, Unassigned)

References

()

Details

(Whiteboard: gfx-noted)

Attachments

(2 files)

Reproducible on Firefox 40 Beta 9 (BuildID: 20150730171029)
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0

Steps to reproduce:
1. Launch Firefox.
2. Open http://goo.gl/zz1rox . 
3. Try to change the value of the X,Y or Z by clicking on the fields.  

Expected results: The values can be successfully modified. 

Actual results: The values can't be modified. The fields with the values are not editable. 

Notes:
1. The issue is reproducible also on Windows 8 32bit and Ubuntu 14.04 x64.
2. The issue is reproducible also on Firefox 38.0.5 and Firefox 36.
I confirm this in Windows 10 with Firefox Nightly. I suspect this is a webcompat issue for Google to fix but perhaps this requires something we've not yet implemented. I'll need someone more knowledgeable than I to take a look at this.
Flags: needinfo?(milan)
Version: 40 Branch → Trunk
Doubt this has anything to do with WebGL.


I managed to get this error once, on this page, though I can't figure out what I've done:
Query failed: TypeError: this._searchSuggestionController is null
*************************
A coding exception was thrown in a Promise resolution callback.
See https://developer.mozilla.org/Mozilla/JavaScript_code_modules/Promise.jsm/Promise

Full message: TypeError: this._searchSuggestionController is null
Full stack: _matchSearchSuggestions/promise<@resource://gre/components/UnifiedComplete.js:944:1
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:934:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:813:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:744:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:776:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:711:7
this.SearchSuggestionController.prototype._fetchRemote/<@resource://gre/modules/SearchSuggestionController.jsm:250:54
this.SearchSuggestionController.prototype.stop@resource://gre/modules/SearchSuggestionController.jsm:172:7
stop@resource://gre/modules/PlacesSearchAutocompleteProvider.jsm:181:5
stop@resource://gre/components/UnifiedComplete.js:782:7
UnifiedComplete.prototype.stopSearch@resource://gre/components/UnifiedComplete.js:1785:7
onInput@chrome://browser/content/urlbarBindings.xml:858:13
onxblinput@chrome://global/content/bindings/autocomplete.xml:581:9

*************************
*************************
A coding exception was thrown and uncaught in a Task.

Full message: TypeError: this._searchSuggestionController is null
Full stack: _matchSearchSuggestions/promise<@resource://gre/components/UnifiedComplete.js:944:1
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:934:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:813:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:744:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:776:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:711:7
this.SearchSuggestionController.prototype._fetchRemote/<@resource://gre/modules/SearchSuggestionController.jsm:250:54
this.SearchSuggestionController.prototype.stop@resource://gre/modules/SearchSuggestionController.jsm:172:7
stop@resource://gre/modules/PlacesSearchAutocompleteProvider.jsm:181:5
stop@resource://gre/components/UnifiedComplete.js:782:7
UnifiedComplete.prototype.stopSearch@resource://gre/components/UnifiedComplete.js:1785:7
onInput@chrome://browser/content/urlbarBindings.xml:858:13
onxblinput@chrome://global/content/bindings/autocomplete.xml:581:9

*************************
Query failed: TypeError: this._searchSuggestionController is null
2015-07-31 15:49:29.077 firefox[52225:303] Set intl.ime.nstextinput.enable to true in about:config to fix input.
*************************
No errors or extra messages with MOZ_GL_SPEW set.
Flags: needinfo?(milan)
It works in Edge, too.
So the fields aren't editable in Firefox, but you can change the values fine by zooming in and out. This means it's almost certainly not a WebGL issue. Probably something in DOM.
This is either a web-compat issue with the site or a bug in our code somewhere, probably in DOM somewhere.
Component: Canvas: WebGL → DOM
Summary: WebGL animations - The values of a Graph can't be modified → The values of a google 3d graph can't be modified
Something is weird here.  If I breakpoint in our debugger on all click event listeners in the page, then this works.  I can click the number, and I get an editable number input for it.  But only if the devtools are in a separate window.

So I tried breakpointing on blur handlers instead.  Now what I see, with devtools in the _same_ window, even, is that we do switch to the number input, then fire a blur event.  The blur event handler switches the input back to a non-editable cell.

So I guess the question is why we're firing a blur event during that click...
Component: DOM → DOM: Events
Flags: needinfo?(bugs)
Because an ancestor of the element you click has a tabindex=0 attribute and therefore gains focus by the mousedown and looses focus when the input is focused?
Flags: needinfo?(bugs)
As ever so often, once you've found the apparent cause of something what's left to explain is why this doesn't cause the same effect in other browsers..

In IE, the unselectable=on attribute on the children means the element with tabindex doesn't gain focus after all.

Although the site does apply -webkit-user-select:none, it has no such effect in a minimised test case so I'm not yet sure why Chrome&co manage to avoid triggering (or ignore) that blur event.
I'm pretty sure I tried removing that "tabindex=0" using the devtools while testing stuff for comment 7 and the behavior did not change....  So there's something else going on too, as far as I can tell.

That's assuming you mean the tabindex=0 on the <div aria-labelledby="graph_heading">, at least.
Flags: needinfo?(bugs)
You're right. We fire another blur event for a different reason and I haven't figured out why yet. Still looking at it, but Olli might find it faster..
The real reason: it's a type=number input. For some reason a blur event gets fired when input type=number gets focused by JS..
It's even more interesting than that - seems there needs to be some "instability" in the DOM to cause this effect - like the element being newly appended or the DOM not fully built. If I take this minimal TC and put the select() call inside onload it seems to pass fine. ,-o

Over to you, Olli!
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 1057858
Flags: needinfo?(bugs)
You need to log in before you can comment on or make changes to this bug.