Changeset 253421 in webkit


Ignore:
Timestamp:
Dec 12, 2019 12:24:24 AM (4 years ago)
Author:
Devin Rousso
Message:

Web Inspector: REGRESSION(r251227): Uncaught Exception: undefined is not an object (evaluating 'target.DOMAgent.setInspectModeEnabled')
https://bugs.webkit.org/show_bug.cgi?id=205148

Reviewed by Joseph Pecoraro.

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.setTimelineProfilingEnabled):
(InspectorFrontendAPI.setElementSelectionEnabled):
If there are no targets available yet (WI.targetsAvailable()), then wait for targets to
be available (WI.whenTargetsAvailable()) before performing the intended logic, as the
InspectorFrontendAPI only waits for the backend connection to be established before
dispatching, meaning that there may not be a page target yet. Other InspectorFrontendAPI
functions don't need to be changed because they don't cause commands to be invoked.

  • UserInterface/Controllers/DOMManager.js:

(WI.DOMManager.prototype.set inspectModeEnabled):
Drive-by: don't assume that inspect mode is disabled if an error is thrown.

  • UserInterface/Base/Main.js:

Drive-by: remove duplicate function WI._toggleInspectMode as it already exists.

Location:
trunk/Source/WebInspectorUI
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r253411 r253421  
     12019-12-12  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: REGRESSION(r251227): Uncaught Exception: undefined is not an object (evaluating 'target.DOMAgent.setInspectModeEnabled')
     4        https://bugs.webkit.org/show_bug.cgi?id=205148
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        * UserInterface/Protocol/InspectorFrontendAPI.js:
     9        (InspectorFrontendAPI.setTimelineProfilingEnabled):
     10        (InspectorFrontendAPI.setElementSelectionEnabled):
     11        If there are no targets available yet (`WI.targetsAvailable()`), then wait for targets to
     12        be available (`WI.whenTargetsAvailable()`) before performing the intended logic, as the
     13        `InspectorFrontendAPI` only waits for the backend connection to be established before
     14        dispatching, meaning that there may not be a page target yet. Other `InspectorFrontendAPI`
     15        functions don't need to be changed because they don't cause commands to be invoked.
     16
     17        * UserInterface/Controllers/DOMManager.js:
     18        (WI.DOMManager.prototype.set inspectModeEnabled):
     19        Drive-by: don't assume that inspect mode is disabled if an error is thrown.
     20
     21        * UserInterface/Base/Main.js:
     22        Drive-by: remove duplicate function `WI._toggleInspectMode` as it already exists.
     23
    1242019-12-11  Devin Rousso  <drousso@apple.com>
    225
  • trunk/Source/WebInspectorUI/UserInterface/Base/Main.js

    r253211 r253421  
    23232323};
    23242324
    2325 WI._toggleInspectMode = function(event)
    2326 {
    2327     WI.domManager.inspectModeEnabled = !WI.domManager.inspectModeEnabled;
    2328 };
    2329 
    23302325WI._showConsoleTab = function(event)
    23312326{
  • trunk/Source/WebInspectorUI/UserInterface/Controllers/DOMManager.js

    r253242 r253421  
    588588        };
    589589        target.DOMAgent.setInspectModeEnabled.invoke(commandArguments, (error) => {
    590             this._inspectModeEnabled = error ? false : enabled;
     590            if (error) {
     591                WI.reportInternalError(error);
     592                return;
     593            }
     594
     595            this._inspectModeEnabled = enabled;
    591596            this.dispatchEventToListeners(WI.DOMManager.Event.InspectModeStateChanged);
    592597        });
  • trunk/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js

    r252790 r253421  
    4545    setTimelineProfilingEnabled: function(enabled)
    4646    {
     47        if (!WI.targetsAvailable()) {
     48            WI.whenTargetsAvailable().then(() => {
     49                InspectorFrontendAPI.setTimelineProfilingEnabled(enabled);
     50            });
     51            return;
     52        }
     53
    4754        WI.showTimelineTab();
    4855
     
    5865    setElementSelectionEnabled: function(enabled)
    5966    {
     67        if (!WI.targetsAvailable()) {
     68            WI.whenTargetsAvailable().then(() => {
     69                InspectorFrontendAPI.setElementSelectionEnabled(enabled);
     70            });
     71            return;
     72        }
     73
    6074        WI.domManager.inspectModeEnabled = enabled;
    6175    },
Note: See TracChangeset for help on using the changeset viewer.