Bug 1417368 - Fixing launchpad `response is undefined` error & Toolbox.shouldComponentUpdate warning r?honza
MozReview-Commit-ID: ImN34U0tFGm
--- a/devtools/client/netmonitor/src/components/Toolbar.js
+++ b/devtools/client/netmonitor/src/components/Toolbar.js
@@ -97,17 +97,17 @@ class Toolbar extends Component {
return this.props.networkDetailsOpen !== nextProps.networkDetailsOpen
|| this.props.networkDetailsToggleDisabled !== nextProps.networkDetailsToggleDisabled
|| this.props.persistentLogsEnabled !== nextProps.persistentLogsEnabled
|| this.props.browserCacheDisabled !== nextProps.browserCacheDisabled
|| this.props.recording !== nextProps.recording
|| !I.is(this.props.requestFilterTypes, nextProps.requestFilterTypes)
// Filtered requests are useful only when searchbox is focused
- || this.refs.searchbox && this.refs.searchbox.focused;
+ || !!(this.refs.searchbox && this.refs.searchbox.focused);
}
componentWillUnmount() {
Services.prefs.removeObserver(DEVTOOLS_ENABLE_PERSISTENT_LOG_PREF,
this.updatePersistentLogsEnabled);
Services.prefs.removeObserver(DEVTOOLS_DISABLE_CACHE_PREF,
this.updateBrowserCacheDisabled);
}
--- a/devtools/client/netmonitor/src/connector/firefox-data-provider.js
+++ b/devtools/client/netmonitor/src/connector/firefox-data-provider.js
@@ -528,36 +528,38 @@ class FirefoxDataProvider {
*
* @param {string} actor actor id (used as request id)
* @param {string} method identifier of the data we want to fetch
*
* @return {Promise} return a promise resolved when data is received.
*/
async _requestData(actor, method) {
// Calculate real name of the client getter.
- let clientMethodName = "get" + method.charAt(0).toUpperCase() +
- method.slice(1);
+ let clientMethodName = `get${method.charAt(0).toUpperCase()}${method.slice(1)}`;
// The name of the callback that processes request response
- let callbackMethodName = "on" + method.charAt(0).toUpperCase() +
- method.slice(1);
+ let callbackMethodName = `on${method.charAt(0).toUpperCase()}${method.slice(1)}`;
// And the event to fire before updating this data
- let updatingEventName = "UPDATING_" + method.replace(/([A-Z])/g, "_$1").toUpperCase();
+ let updatingEventName = `UPDATING_${method.replace(/([A-Z])/g, "_$1").toUpperCase()}`;
+
+ // Emit event that tell we just start fetching some data
+ emit(EVENTS[updatingEventName], actor);
- if (typeof this.webConsoleClient[clientMethodName] == "function") {
- // Emit event that tell we just start fetching some data
- emit(EVENTS[updatingEventName], actor);
-
+ let response = await new Promise((resolve, reject) => {
// Do a RDP request to fetch data from the actor.
- let response = await this.webConsoleClient[clientMethodName](actor);
+ if (typeof this.webConsoleClient[clientMethodName] === "function") {
+ this.webConsoleClient[clientMethodName](actor, (res) => {
+ resolve(res);
+ });
+ } else {
+ reject(new Error(`Error: No such client method '${clientMethodName}'!`));
+ }
+ });
- // Call data processing method.
- response = await this[callbackMethodName](response);
- return response;
- }
- throw new Error("Error: No such client method '" + clientMethodName + "'!");
+ // Call data processing method.
+ return this[callbackMethodName](response);
}
/**
* Handles additional information received for a "requestHeaders" packet.
*
* @param {object} response the message received from the server.
*/
onRequestHeaders(response) {