Closed Bug 1485374 Opened 6 years ago Closed 6 years ago

Use target.getFront to instantiate the inspector front

Categories

(DevTools :: Framework, enhancement, P2)

enhancement

Tracking

(firefox63 fixed)

RESOLVED FIXED
Firefox 63
Tracking Status
firefox63 --- fixed

People

(Reporter: ochameau, Assigned: yulia)

References

(Blocks 1 open bug)

Details

(Whiteboard: dt-fission)

Attachments

(1 file)

This one front is harder to refactor as it introduce test failure.
Most likely because of subtle races in the destruction codepath as using target.getFront changes the very precise moment where/when we destroy the front.

We should replace the creation here:
  https://searchfox.org/mozilla-central/rev/3fa761ade83ed0b8ab463acb057c2cf0b104689e/devtools/client/framework/toolbox.js#2717
And remove the front destroy from here:
  https://searchfox.org/mozilla-central/rev/3fa761ade83ed0b8ab463acb057c2cf0b104689e/devtools/client/framework/toolbox.js#2805

But while doing that we may also try to move some code from initInspector/destroyInspector into the fronts. (it may help fixing this)
Blocks: 1485383
Summary: Use target.getFront to instanciate the inspector front → Use target.getFront to instantiate the inspector front
Assignee: nobody → ystartsev
Update toolbox to use target.getFront to instantiate inspector
Comment on attachment 9004954 [details]
Bug 1485374 - Update inspector front to use target.getFront

Alexandre Poirot [:ochameau] has approved the revision.
Attachment #9004954 - Flags: review+
Depends on: 1487428
Blocks: 1447487
Pushed by ystartsev@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/d4761bb0096a
Update inspector front to use target.getFront
Backed out 3 changesets (bug 1447487, bug 1485374) for failing at browser_ext_devtools_panels_elements_sidebar.js and /mochitest/test_inspector-pick-color.html on a CLOSED TREE

Backout link: https://hg.mozilla.org/integration/mozilla-inbound/rev/d4c75554b3749be3c32971ab9a67873008c75bfd

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=82ef44f87f728be56a6c2fee209e7b88b9fdcbb4&filter-resultStatus=testfailed&filter-resultStatus=busted&filter-resultStatus=exception

For /mochitest/test_inspector-pick-color.html failure:

Log link: https://treeherder.mozilla.org/logviewer.html#?job_id=196721962&repo=mozilla-inbound&lineNumber=65308

Log snippet: 
[task 2018-08-30T18:17:23.148Z] 18:17:23     INFO - GECKO(4482) | DBG-SERVER: Received packet 6: {
[task 2018-08-30T18:17:23.148Z] 18:17:23     INFO - GECKO(4482) |   "type": "frameUpdate",
[task 2018-08-30T18:17:23.149Z] 18:17:23     INFO - GECKO(4482) |   "frames": [
[task 2018-08-30T18:17:23.150Z] 18:17:23     INFO - GECKO(4482) |     {
[task 2018-08-30T18:17:23.150Z] 18:17:23     INFO - GECKO(4482) |       "id": 418,
[task 2018-08-30T18:17:23.151Z] 18:17:23     INFO - GECKO(4482) |       "url": "chrome://mochitests/content/chrome/devtools/server/tests/mochitest/inspector-eyedropper.html",
[task 2018-08-30T18:17:23.152Z] 18:17:23     INFO - GECKO(4482) |       "title": "Inspector Eyedropper tests"
[task 2018-08-30T18:17:23.152Z] 18:17:23     INFO - GECKO(4482) |     }
[task 2018-08-30T18:17:23.153Z] 18:17:23     INFO - GECKO(4482) |   ],
[task 2018-08-30T18:17:23.154Z] 18:17:23     INFO - GECKO(4482) |   "from": "server1.conn0.child2/frameTarget1"
[task 2018-08-30T18:17:23.154Z] 18:17:23     INFO - GECKO(4482) | }
[task 2018-08-30T18:17:23.155Z] 18:17:23     INFO - GECKO(4482) | DBG-SERVER: Received packet 7: {
[task 2018-08-30T18:17:23.156Z] 18:17:23     INFO - GECKO(4482) |   "type": "pickColorFromPage",
[task 2018-08-30T18:17:23.156Z] 18:17:23     INFO - GECKO(4482) |   "to": "server1.conn0.child2/inspectorActor3"
[task 2018-08-30T18:17:23.157Z] 18:17:23     INFO - GECKO(4482) | }
[task 2018-08-30T18:17:23.158Z] 18:17:23     INFO - GECKO(4482) | DBG-SERVER: Packet 8 sent from "server1.conn0.child2/inspectorActor3"
[task 2018-08-30T18:17:23.158Z] 18:17:23     INFO - GECKO(4482) | DBG-SERVER: Received packet 8: {
[task 2018-08-30T18:17:23.159Z] 18:17:23     INFO - GECKO(4482) |   "from": "server1.conn0.child2/inspectorActor3"
[task 2018-08-30T18:17:23.159Z] 18:17:23     INFO - GECKO(4482) | }
[task 2018-08-30T18:17:23.160Z] 18:17:23     INFO - TEST-INFO | started process screentopng
[task 2018-08-30T18:17:23.161Z] 18:17:23     INFO - TEST-INFO | screentopng: exit 0
[task 2018-08-30T18:17:23.161Z] 18:17:23     INFO - Buffered messages logged at 18:17:17
[task 2018-08-30T18:17:23.162Z] 18:17:23     INFO - Setting up inspector actor
[task 2018-08-30T18:17:23.163Z] 18:17:23     INFO - Buffered messages logged at 18:17:18
[task 2018-08-30T18:17:23.163Z] 18:17:23     INFO - Start picking a color from the page
[task 2018-08-30T18:17:23.164Z] 18:17:23     INFO - Buffered messages finished
[task 2018-08-30T18:17:23.165Z] 18:17:23     INFO - TEST-UNEXPECTED-FAIL | devtools/server/tests/mochitest/test_inspector-pick-color.html | TypeError: options is undefined, can't access property "fromMenu" of it 
[task 2018-08-30T18:17:23.165Z] 18:17:23     INFO - promise callback*addAsyncTest/<@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/inspector-helpers.js:300:35
[task 2018-08-30T18:17:23.166Z] 18:17:23     INFO - runNextTest@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/inspector-helpers.js:310:5
[task 2018-08-30T18:17:23.166Z] 18:17:23     INFO - window.onload/<@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/test_inspector-pick-color.html:39:5
[task 2018-08-30T18:17:23.167Z] 18:17:23     INFO - async*addAsyncTest/<@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/inspector-helpers.js:300:22
[task 2018-08-30T18:17:23.167Z] 18:17:23     INFO - runNextTest@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/inspector-helpers.js:310:5
[task 2018-08-30T18:17:23.168Z] 18:17:23     INFO - window.onload@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/test_inspector-pick-color.html:88:3
[task 2018-08-30T18:17:23.168Z] 18:17:23     INFO - EventHandlerNonNull*@chrome://mochitests/content/chrome/devtools/server/tests/mochitest/test_inspector-pick-color.html:18:1
[task 2018-08-30T18:22:42.875Z] 18:22:42     INFO - Not taking screenshot here: see the one that was previously logged
[task 2018-08-30T18:22:42.877Z] 18:22:42     INFO - TEST-UNEXPECTED-FAIL | devtools/server/tests/mochitest/test_inspector-pick-color.html | Test timed out. 
[task 2018-08-30T18:22:42.878Z] 18:22:42     INFO - reportError@chrome://mochikit/content/tests/SimpleTest/TestRunner.js:121:7
[task 2018-08-30T18:22:42.878Z] 18:22:42     INFO - TestRunner._checkForHangs@chrome://mochikit/content/tests/SimpleTest/TestRunner.js:142:7

For /test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js failure:

Log link: https://treeherder.mozilla.org/logviewer.html#?job_id=196700920&repo=mozilla-inbound&lineNumber=1831
Log snippet:
[task 2018-08-30T16:14:21.786Z] 16:14:21     INFO - TEST-START | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js
[task 2018-08-30T16:14:25.150Z] 16:14:25     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_OBJECT_TREEVIEW_UPDATE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-1\",\n  \"object\": {\n    \"anotherPropertyName\": 123\n  }\n}"
[task 2018-08-30T16:14:25.198Z] 16:14:25     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_OBJECT_TREEVIEW_UPDATE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-2\",\n  \"object\": {\n    \"Optional Root Object Title\": {\n      \"propertyName\": \"propertyValue\"\n    }\n  }\n}"
[task 2018-08-30T16:14:27.397Z] 16:14:27     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_OBJECT_GRIP_VIEW_UPDATE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-0\",\n  \"objectValueGrip\": {\n    \"type\": \"object\",\n    \"actor\": \"server1.conn31.child1/obj41\",\n    \"class\": \"Object\",\n    \"extensible\": true,\n    \"frozen\": false,\n    \"sealed\": false,\n    \"ownPropertyLength\": 2,\n    \"preview\": {\n      \"kind\": \"Object\",\n      \"ownProperties\": {\n        \"prop1\": {\n          \"configurable\": true,\n          \"enumerable\": true,\n          \"writable\": true,\n          \"value\": 123\n        },\n        \"cyclic\": {\n          \"configurable\": true,\n          \"enumerable\": true,\n          \"writable\": true,\n          \"value\": {\n            \"type\": \"object\",\n            \"actor\": \"server1.conn31.child1/obj42\",\n            \"class\": \"Object\",\n            \"extensible\": true,\n            \"frozen\": false,\n            \"sealed\": false,\n            \"ownPropertyLength\": 2\n          }\n        }\n      },\n      \"ownSymbols\": [\n        {\n          \"descriptor\": {\n            \"configurable\": true,\n            \"enumerable\": true,\n            \"writable\": true,\n            \"value\": 456\n          },\n          \"type\": \"symbol\",\n          \"actor\": \"server1.conn31.child1/symbol43\",\n          \"name\": \"sym1\"\n        }\n      ],\n      \"ownPropertiesLength\": 2,\n      \"ownSymbolsLength\": 1,\n      \"safeGetterValues\": {}\n    }\n  },\n  \"rootTitle\": \"sidebar.setExpression rootTitle\"\n}"
[task 2018-08-30T16:14:28.070Z] 16:14:28     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_REMOVE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-0\"\n}"
[task 2018-08-30T16:14:28.111Z] 16:14:28     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_REMOVE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-1\"\n}"
[task 2018-08-30T16:14:28.355Z] 16:14:28     INFO - GECKO(1066) | console.log: "[DISPATCH]" "{\n  \"type\": \"EXTENSION_SIDEBAR_REMOVE\",\n  \"sidebarId\": \"devtools-inspector-sidebar-_bdf59545-87d9-4839-89fc-e2d7a88b455a_-656-2\"\n}"
[task 2018-08-30T16:14:28.866Z] 16:14:28     INFO - GECKO(1066) | console.error: (new TypeError("this.inspector is null, can't access property \"pageStyle\" of it", "resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/boxmodel/box-model.js", 155))
[task 2018-08-30T16:14:28.867Z] 16:14:28     INFO - GECKO(1066) | JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js, line 251: TypeError: this.store is null, can't access property "dispatch" of it
[task 2018-08-30T16:14:28.890Z] 16:14:28     INFO - GECKO(1066) | JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/flexbox/flexbox.js, line 330: TypeError: this.store is null, can't access property "dispatch" of it
[task 2018-08-30T16:14:29.900Z] 16:14:29     INFO - TEST-INFO | started process screentopng
[task 2018-08-30T16:14:30.562Z] 16:14:30     INFO - TEST-INFO | screentopng: exit 0
[task 2018-08-30T16:14:30.568Z] 16:14:30     INFO - Buffered messages logged at 16:14:21
[task 2018-08-30T16:14:30.570Z] 16:14:30     INFO - Entering test bound test_devtools_panels_elements_sidebar
[task 2018-08-30T16:14:30.573Z] 16:14:30     INFO - Buffered messages logged at 16:14:22
[task 2018-08-30T16:14:30.576Z] 16:14:30     INFO - Extension loaded
[task 2018-08-30T16:14:30.577Z] 16:14:30     INFO - Console message: Warning: attempting to write 10500 bytes to preference extensions.webextensions.uuids. This is bad for general performance and memory usage. Such an amount of data should rather be written to an external file. This preference will not be sent to any content processes.
[task 2018-08-30T16:14:30.579Z] 16:14:30     INFO - Buffered messages logged at 16:14:24
[task 2018-08-30T16:14:30.588Z] 16:14:30     INFO - developer toolbox opened
[task 2018-08-30T16:14:30.589Z] 16:14:30     INFO - Buffered messages logged at 16:14:27
[task 2018-08-30T16:14:30.590Z] 16:14:30     INFO - Test extension inspector sidebar 1 (sidebar.setExpression)
[task 2018-08-30T16:14:30.592Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the shown event on the first extension sidebar - 
[task 2018-08-30T16:14:30.595Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the expected title on the active sidebar tab - 
[task 2018-08-30T16:14:30.597Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got a rendered sidebar panel for the first registered extension sidebar - 
[task 2018-08-30T16:14:30.598Z] 16:14:30     INFO - Waiting for the first panel to be rendered
[task 2018-08-30T16:14:30.600Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | There is the expected number of object inspectors - 
[task 2018-08-30T16:14:30.601Z] 16:14:30     INFO - Console message: [JavaScript Error: "NetworkError when attempting to fetch resource."]
[task 2018-08-30T16:14:30.606Z] 16:14:30     INFO - get@resource://services-settings/remote-settings.js:326:9
[task 2018-08-30T16:14:30.608Z] 16:14:30     INFO - async*getSite@resource://activity-stream/lib/FaviconFeed.jsm:158:25
[task 2018-08-30T16:14:30.609Z] 16:14:30     INFO - async*fetchIcon@resource://activity-stream/lib/FaviconFeed.jsm:132:24
[task 2018-08-30T16:14:30.610Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/FaviconFeed.jsm:182:9
[task 2018-08-30T16:14:30.611Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.612Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.613Z] 16:14:30     INFO - _requestRichIcon@resource://activity-stream/lib/TopSitesFeed.jsm:461:5
[task 2018-08-30T16:14:30.615Z] 16:14:30     INFO - _fetchIcon@resource://activity-stream/lib/TopSitesFeed.jsm:425:5
[task 2018-08-30T16:14:30.617Z] 16:14:30     INFO - async*getLinksWithDefaults@resource://activity-stream/lib/TopSitesFeed.jsm:330:11
[task 2018-08-30T16:14:30.618Z] 16:14:30     INFO - async*refresh@resource://activity-stream/lib/TopSitesFeed.jsm:353:25
[task 2018-08-30T16:14:30.623Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/TopSitesFeed.jsm:653:9
[task 2018-08-30T16:14:30.624Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.625Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.626Z] 16:14:30     INFO - init/this.intervalId<@resource://activity-stream/lib/SystemTickFeed.jsm:18:41
[task 2018-08-30T16:14:30.627Z] 16:14:30     INFO - notify@resource://gre/modules/Timer.jsm:42:7
[task 2018-08-30T16:14:30.628Z] 16:14:30     INFO - 
[task 2018-08-30T16:14:30.630Z] 16:14:30     INFO - Console message: [JavaScript Error: "NetworkError when attempting to fetch resource."]
[task 2018-08-30T16:14:30.631Z] 16:14:30     INFO - get@resource://services-settings/remote-settings.js:326:9
[task 2018-08-30T16:14:30.632Z] 16:14:30     INFO - async*getSite@resource://activity-stream/lib/FaviconFeed.jsm:158:25
[task 2018-08-30T16:14:30.633Z] 16:14:30     INFO - async*fetchIcon@resource://activity-stream/lib/FaviconFeed.jsm:132:24
[task 2018-08-30T16:14:30.634Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/FaviconFeed.jsm:182:9
[task 2018-08-30T16:14:30.635Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.636Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.637Z] 16:14:30     INFO - _requestRichIcon@resource://activity-stream/lib/TopSitesFeed.jsm:461:5
[task 2018-08-30T16:14:30.638Z] 16:14:30     INFO - _fetchIcon@resource://activity-stream/lib/TopSitesFeed.jsm:425:5
[task 2018-08-30T16:14:30.639Z] 16:14:30     INFO - async*getLinksWithDefaults@resource://activity-stream/lib/TopSitesFeed.jsm:330:11
[task 2018-08-30T16:14:30.640Z] 16:14:30     INFO - async*refresh@resource://activity-stream/lib/TopSitesFeed.jsm:353:25
[task 2018-08-30T16:14:30.642Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/TopSitesFeed.jsm:653:9
[task 2018-08-30T16:14:30.643Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.646Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.647Z] 16:14:30     INFO - init/this.intervalId<@resource://activity-stream/lib/SystemTickFeed.jsm:18:41
[task 2018-08-30T16:14:30.648Z] 16:14:30     INFO - notify@resource://gre/modules/Timer.jsm:42:7
[task 2018-08-30T16:14:30.650Z] 16:14:30     INFO - 
[task 2018-08-30T16:14:30.650Z] 16:14:30     INFO - Console message: [JavaScript Error: "NetworkError when attempting to fetch resource."]
[task 2018-08-30T16:14:30.652Z] 16:14:30     INFO - get@resource://services-settings/remote-settings.js:326:9
[task 2018-08-30T16:14:30.653Z] 16:14:30     INFO - async*getSite@resource://activity-stream/lib/FaviconFeed.jsm:158:25
[task 2018-08-30T16:14:30.654Z] 16:14:30     INFO - async*fetchIcon@resource://activity-stream/lib/FaviconFeed.jsm:132:24
[task 2018-08-30T16:14:30.655Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/FaviconFeed.jsm:182:9
[task 2018-08-30T16:14:30.657Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.657Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.658Z] 16:14:30     INFO - _requestRichIcon@resource://activity-stream/lib/TopSitesFeed.jsm:461:5
[task 2018-08-30T16:14:30.659Z] 16:14:30     INFO - _fetchIcon@resource://activity-stream/lib/TopSitesFeed.jsm:425:5
[task 2018-08-30T16:14:30.660Z] 16:14:30     INFO - async*getLinksWithDefaults@resource://activity-stream/lib/TopSitesFeed.jsm:330:11
[task 2018-08-30T16:14:30.661Z] 16:14:30     INFO - async*refresh@resource://activity-stream/lib/TopSitesFeed.jsm:353:25
[task 2018-08-30T16:14:30.661Z] 16:14:30     INFO - async*onAction@resource://activity-stream/lib/TopSitesFeed.jsm:653:9
[task 2018-08-30T16:14:30.662Z] 16:14:30     INFO - _middleware/</<@resource://activity-stream/lib/Store.jsm:51:11
[task 2018-08-30T16:14:30.662Z] 16:14:30     INFO - Store/this[method]@resource://activity-stream/lib/Store.jsm:29:54
[task 2018-08-30T16:14:30.664Z] 16:14:30     INFO - init/this.intervalId<@resource://activity-stream/lib/SystemTickFeed.jsm:18:41
[task 2018-08-30T16:14:30.664Z] 16:14:30     INFO - notify@resource://gre/modules/Timer.jsm:42:7
[task 2018-08-30T16:14:30.665Z] 16:14:30     INFO - 
[task 2018-08-30T16:14:30.665Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the expected number of nodes in the tree - 
[task 2018-08-30T16:14:30.665Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the expected property names - 
[task 2018-08-30T16:14:30.665Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got an Accordion component as expected - 
[task 2018-08-30T16:14:30.666Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The ObjectInspector should be inside the Accordion content - 
[task 2018-08-30T16:14:30.666Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The Accordion has the expected label - 
[task 2018-08-30T16:14:30.666Z] 16:14:30     INFO - Test extension inspector sidebar 2 (sidebar.setObject without a root title)
[task 2018-08-30T16:14:30.668Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the shown event on the second extension sidebar - 
[task 2018-08-30T16:14:30.669Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the hidden event on the first extension sidebar - 
[task 2018-08-30T16:14:30.671Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the expected title on the active sidebar tab - 
[task 2018-08-30T16:14:30.673Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got a rendered sidebar panel for the second registered extension sidebar - 
[task 2018-08-30T16:14:30.675Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The sidebar panel contains a rendered TreeView component - 
[task 2018-08-30T16:14:30.682Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The TreeView component contains the expected a cell of type number - 
[task 2018-08-30T16:14:30.683Z] 16:14:30     INFO - Test extension inspector sidebar 3 (sidebar.setObject with a root title)
[task 2018-08-30T16:14:30.685Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the shown event on the second extension sidebar - 
[task 2018-08-30T16:14:30.686Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the hidden event on the first extension sidebar - 
[task 2018-08-30T16:14:30.688Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got the expected title on the active sidebar tab - 
[task 2018-08-30T16:14:30.689Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | Got a rendered sidebar panel for the third registered extension sidebar - 
[task 2018-08-30T16:14:30.691Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The sidebar panel contains a rendered TreeView component - 
[task 2018-08-30T16:14:30.692Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The TreeView component contains the expected a cell of type string - 
[task 2018-08-30T16:14:30.693Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The optional root object title has been included in the object tree - 
[task 2018-08-30T16:14:30.695Z] 16:14:30     INFO - Unloading the extension and check that all the sidebar have been removed
[task 2018-08-30T16:14:30.696Z] 16:14:30     INFO - Buffered messages logged at 16:14:28
[task 2018-08-30T16:14:30.698Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | All the registered sidebars have been unregistered on extension unload - 
[task 2018-08-30T16:14:30.699Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The first registered sidebar has been removed - 
[task 2018-08-30T16:14:30.701Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The second registered sidebar has been removed - 
[task 2018-08-30T16:14:30.707Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | The third registered sidebar has been removed - 
[task 2018-08-30T16:14:30.709Z] 16:14:30     INFO - Test that all the objectValueGrip actors have been released
[task 2018-08-30T16:14:30.710Z] 16:14:30     INFO - TEST-PASS | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js |  - 
[task 2018-08-30T16:14:30.712Z] 16:14:30     INFO - Console message: [JavaScript Error: "TypeError: this.store is null, can't access property "dispatch" of it" {file: "resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js" line: 251}]
[task 2018-08-30T16:14:30.712Z] 16:14:30     INFO - Console message: [JavaScript Error: "TypeError: this.store is null, can't access property "dispatch" of it" {file: "resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/flexbox/flexbox.js" line: 330}]
[task 2018-08-30T16:14:30.714Z] 16:14:30     INFO - Buffered messages finished
[task 2018-08-30T16:14:30.718Z] 16:14:30     INFO - TEST-UNEXPECTED-FAIL | browser/components/extensions/test/browser/test-oop-extensions/browser_ext_devtools_panels_elements_sidebar.js | A promise chain failed to handle a rejection: this.store is null, can't access property "dispatch" of it - stack: updateGridPanel@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js:251:7
[task 2018-08-30T16:14:30.719Z] 16:14:30     INFO - Async*onSidebarSelect@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js:507:5
[task 2018-08-30T16:14:30.720Z] 16:14:30     INFO - init@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js:108:5
[task 2018-08-30T16:14:30.720Z] 16:14:30     INFO - async*GridInspector@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/grids/grid-inspector.js:72:5
[task 2018-08-30T16:14:30.721Z] 16:14:30     INFO - init@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/layout/layout.js:53:26
[task 2018-08-30T16:14:30.722Z] 16:14:30     INFO - LayoutView@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/layout/layout.js:26:5
[task 2018-08-30T16:14:30.724Z] 16:14:30     INFO - panel@resource://devtools/client/inspector/inspector.js:925:31
[task 2018-08-30T16:14:30.724Z] 16:14:30     INFO - renderPanels/panels<@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/components/tabs/Tabs.js:386:25
[task 2018-08-30T16:14:30.725Z] 16:14:30     INFO - renderPanels@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/components/tabs/Tabs.js:365:10
[task 2018-08-30T16:14:30.726Z] 16:14:30     INFO - render@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/components/tabs/Tabs.js:415:11
[task 2018-08-30T16:14:30.727Z] 16:14:30     INFO - finishClassComponent@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:10332:22
[task 2018-08-30T16:14:30.728Z] 16:14:30     INFO - updateClassComponent@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:10295:10
[task 2018-08-30T16:14:30.729Z] 16:14:30     INFO - beginWork@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:10894:14
[task 2018-08-30T16:14:30.731Z] 16:14:30     INFO - performUnitOfWork@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:12713:12
[task 2018-08-30T16:14:30.732Z] 16:14:30     INFO - workLoop@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:12730:24
[task 2018-08-30T16:14:30.733Z] 16:14:30     INFO - renderRoot@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:12770:7
[task 2018-08-30T16:14:30.734Z] 16:14:30     INFO - performWorkOnRoot@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:13359:22
[task 2018-08-30T16:14:30.735Z] 16:14:30     INFO - performWork@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:13281:7
[task 2018-08-30T16:14:30.736Z] 16:14:30     INFO - performSyncWork@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:13253:3
[task 2018-08-30T16:14:30.737Z] 16:14:30     INFO - requestWork@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:13153:5
[task 2018-08-30T16:14:30.738Z] 16:14:30     INFO - scheduleWork$1@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:13022:11
[task 2018-08-30T16:14:30.739Z] 16:14:30     INFO - enqueueSetState@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react-dom.js:8845:5
[task 2018-08-30T16:14:30.740Z] 16:14:30     INFO - Component.prototype.setState@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/vendor/react.js:406:3
[task 2018-08-30T16:14:30.741Z] 16:14:30     INFO - removeTab@resource://devtools/shared/base-loader.js -> resource://devtools/client/shared/components/tabs/TabBar.js:217:5
[task 2018-08-30T16:14:30.742Z] 16:14:30     INFO - removeTab@resource://devtools/shared/base-loader.js -> resource://devtools/client/inspector/toolsidebar.js:256:5
Flags: needinfo?(ystartsev)
browser_ext_devtools_panels_elements_sidebar.js was related to this change. We are sending events to the toolbox after the toolbox is closed, and everything is asynchronous. In this case specifically, the "removeTab" action in ToolBar --> https://searchfox.org/mozilla-central/source/devtools/client/shared/components/tabs/TabBar.js#205-227 which sends three "select" functions just as the toolbox is closing. Since destroy functions are asynchronous, halfway in the "update" that is triggered by this select, we lose the reference to the inspector or the store. 

The issue occures in both the grid and the flex box. we have a try/catch block that is async: 
https://searchfox.org/mozilla-central/source/devtools/client/inspector/grids/grid-inspector.js#241-248

so this then fails: https://searchfox.org/mozilla-central/source/devtools/client/inspector/grids/grid-inspector.js#251-253

and by the time this resolves the toolbox is already destroyed. 

We should find a better way to handle destruction. I have opened a new bug for this: https://bugzilla.mozilla.org/show_bug.cgi?id=1487677

For now I have used to try/catch block again, but it should be revisted.
Flags: needinfo?(ystartsev)
Blocks: 1487677
Pushed by ystartsev@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/c3a6cf6cf350
Update inspector front to use target.getFront
https://hg.mozilla.org/integration/mozilla-inbound/rev/b6d3854e89b8
fix race condition on sidebar destruction
Blocks: 1493131
Whiteboard: dt-fission
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: