Commit Graph

49 Commits

Author SHA1 Message Date
Brian Vaughn 4f1d347c04 Custom filters are applied by default after extension reload 2019-05-08 14:22:06 -07:00
Ivan Babak c6c71ef8f9 Fix profiling screenshots data structure to map rootID to commitIndex
Propagate `rootID` throughout the code for `captureScreenshot`.

Rename private profiling maps of `store` to make relations more clear.

Fix missing cleanup for screenshots data in `set importedProfilingData` of `store`.
2019-05-01 01:07:36 -07:00
Brian Vaughn 5204ae87bc Merge pull request #229 from sompylasar/217-workaround-disconnected-port-error
Fix for 'Attempting to use a disconnected port object'
2019-04-30 09:15:52 -07:00
Ivan Babak 1b5f043e01 Fix for 'Attempting to use a disconnected port object'
Fixes https://github.com/bvaughn/react-devtools-experimental/issues/217

The error reproduces with any two React websites, e.g. `https://reactjs.org` and `https://nextjs.org`, by keeping the DevTools Components tab open and switching between these websites in the same browser tab.

There are several issues with the code that contribute to this:
1. `Bridge` leaves behind a dangling timer that fires `_flush` after the bridge has been abandoned ("shutdown").
2. `bridge.send('shutdown')` is asynchronous, so the event handlers do not get unsubscribed in time.
3. `port.onDisconnect` does not trigger on in-tab navigation like new URL or back/forward navigation.
4. State management design of the code that uses shared variables and callbacks makes it hard to handle race conditions originating from the browser.

This commit cleans up some of the lacking symmetry when using `addListener`/`removeListener`, but the code in `shells/browser/shared/src/main.js` is hard to reason about with regards to race conditions, and there are many possible race conditions originating from the browser, so maybe there could be a better design paradigm (like a formal state machine) to manage the state changes in response to sequences of events than plain old event listeners, callbacks, and shared variables.

Unrelated, but clicking Chrome Back/Forward/Back/Forward very fast makes the browser and the DevTools and the DevTools of DevTools stall and become unresponsive for some time, then recovers but the Back/Forward/Stop/Refresh button and favicon loading indicator may remain broken. Looks like a Chrome bug, some kind of a temporary deadlock in handling the browser history.
2019-04-28 04:45:57 -07:00
Ivan Babak 0b817777b4 Remove Agent addBridge: there can only be one bridge, add in constructor
Let's make impossible states truly impossible, and fix Flow types, too.

All three usages of Agent called addBridge right after constructing it.
Agent has one field `_bridge` which is force-typed as not-null despite
there's a temporary zone between the constructor end and addBridge start
where `_bridge` is null.
2019-04-28 04:03:28 -07:00
Dan ce335b8975 View DOM button opens Elements tab 2019-04-13 18:59:47 +01:00
Dan Abramov 43bb821f60 Send the bridge sync event lazily 2019-04-09 20:04:33 +01:00
Dan 72eccb465d Make DOM selection binding one-way 2019-04-09 01:30:40 +01:00
Dan 436912ab2d Remove unnecessary logic 2019-04-08 23:35:01 +01:00
Dan 7aecd58d81 Nits 2019-04-08 23:28:31 +01:00
Dan c91676b557 Don't change browser selection unless React selection changed 2019-04-08 21:57:13 +01:00
Dan Abramov 4a301bd0e0 Sync DevTools Elements and Components tabs 2019-04-08 20:41:01 +01:00
Dan Abramov 132529da79 Preserve state when switching tabs 2019-04-08 15:29:51 +01:00
Brian Vaughn 99f2e0da6f Hardened background script against potential errors 2019-04-03 18:16:00 -07:00
Brian Vaughn ed6e34da8e Added option to disable screenshot capturing while profiling 2019-04-03 14:32:16 -07:00
Brian Vaughn 07bf8e53c1 Renamed GlobalHook content script references to injectGlobalHook to avoid confusion 2019-04-03 11:01:28 -07:00
Brian Vaughn d1a68c4b14 Merge pull request #45 from gaearon/rename
Tab name: "Elements" -> "Components"
2019-04-02 17:55:01 -07:00
Brian Vaughn c111288c54 Store screenshots after each commit when profiling 2019-04-02 15:04:04 -07:00
Dan Abramov 83bd211c9e Elements -> Components (naming) 2019-04-02 19:58:18 +01:00
Dan Abramov de730da230 Elements -> Components (label) 2019-04-02 19:54:22 +01:00
Brian Vaughn 2a80f8ca9c Show is-recording indicator earlier after a reload-and-profile 2019-04-01 14:43:46 -07:00
Brian Vaughn 74cd1a5d29 Misc cleanup of comments and localStorage key names 2019-04-01 09:05:40 -07:00
Brian Vaughn 2c14f3e88e Inject early on when reloading-and-profiling 2019-04-01 07:48:14 -07:00
Lucas Cordeiro e634777027 Fix casing on store import 2019-04-01 10:25:57 -03:00
Brian Vaughn 628c1b2f08 Disable export profiling data option in Firefox. (downloads.download seems to just fail silently.) 2019-03-31 19:18:06 -07:00
Brian Vaughn bfb152f160 Import/export feature 2019-03-31 17:02:30 -07:00
Brian Vaughn e5400f76f0 Added save profiling data button to Profiler 2019-03-30 14:16:34 -07:00
Brian Vaughn 7d24e83989 Implemented reload-and-profile. Also fixed an couple of minor profiling bugs along the way 2019-03-27 09:41:12 -07:00
Brian Vaughn 894990919c Fixed a tab restoration bug in browser extension 2019-03-26 11:13:40 -07:00
Brian Vaughn d973452c36 Removed some outdated TODO comments 2019-03-24 10:14:28 -07:00
Brian Vaughn e728ebc7b9 Unmount and remount when main URL changes to avoid staleness problems 2019-03-18 09:36:47 -07:00
Brian Vaughn c9920f0954 Added a few inline comments 2019-03-18 09:20:00 -07:00
Brian Vaughn 11573bf8d9 Refactored portaling and fixed disconnected CSS vars 2019-03-18 09:11:28 -07:00
Brian Vaughn f3f4643a3a Experimenting with portals 2019-03-17 13:52:37 -07:00
Brian Vaughn d3ee02cd35 Added "Profiler" tab 2019-03-17 10:58:20 -07:00
Brian Vaughn 89df0a6363 Yarn upgrade 2019-02-24 18:32:29 -08:00
Brian Vaughn 53632883b6 Implemented view-source button for DOM extension 2019-02-22 13:24:03 -08:00
Brian Vaughn 90f98372a9 Fixed broken 'shutdown' event that lead to CPU problems when reloading DevTools 2019-02-20 11:55:48 -08:00
Brian Vaughn 15c5396169 Re-added "Settings" panel to browser extension and (hopefully) fixed a lot of sources of error 2019-02-14 11:45:11 -08:00
Brian Vaughn c229837f33 Temporarily disabled Settings panel 2019-02-13 11:36:43 -08:00
Brian Vaughn 4ea81337f3 Initial pass at adding Settings panel to browser extension 2019-02-13 10:59:49 -05:00
Brian Vaughn d203ebf165 Added new tabs UI and theme/display-density preferences 2019-02-12 20:41:39 -05:00
Brian Vaughn e723ec82bc Added $r support 2019-02-05 13:19:08 +00:00
Brian Vaughn 6f952ede2f Fixed regression in browser shell 2019-02-04 18:01:44 +00:00
Brian Vaughn bdfaeede6d Fixed potential race cases in bridge/store/backend initialization 2019-01-31 14:27:16 -08:00
Brian Vaughn ca6151ca01 Reload extension on navigate 2019-01-30 14:16:55 -08:00
Brian Vaughn fdfadef928 Refactored bridge to support transferrables (e.g. typed array buffers) and added transferable param to postMessage for op codes 2019-01-29 13:17:37 -08:00
Brian Vaughn b7cbd38214 Misc updates to better handle tearing and add some future TODOs 2019-01-27 07:58:09 -08:00
Brian Vaughn d57ec69561 Added initial Chrome/Firefox shells 2019-01-23 18:06:21 -08:00