Fix to avoid loading of disabled device plugins
Summary: There is a bug right now that even for disabled plugins we're loading them. In particular, this led to the Flipper freezes caused by Logs plugin even if it is disabled. Reviewed By: passy Differential Revision: D26503012 fbshipit-source-id: 2068626f4637ced44c457ee1b7ba7fffdcf5aa47
This commit is contained in:
committed by
Facebook GitHub Bot
parent
805261b429
commit
c0010bea4c
@@ -956,7 +956,7 @@ test('Sandy plugins support isPluginSupported + selectPlugin', async () => {
|
|||||||
expect(pluginInstance.isPluginAvailable(definition.id)).toBeTruthy();
|
expect(pluginInstance.isPluginAvailable(definition.id)).toBeTruthy();
|
||||||
expect(pluginInstance.isPluginAvailable('nonsense')).toBeFalsy();
|
expect(pluginInstance.isPluginAvailable('nonsense')).toBeFalsy();
|
||||||
expect(pluginInstance.isPluginAvailable(definition2.id)).toBeFalsy(); // not enabled yet
|
expect(pluginInstance.isPluginAvailable(definition2.id)).toBeFalsy(); // not enabled yet
|
||||||
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeTruthy();
|
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeFalsy(); // not enabled yet
|
||||||
expect(pluginInstance.activatedStub).toBeCalledTimes(1);
|
expect(pluginInstance.activatedStub).toBeCalledTimes(1);
|
||||||
expect(pluginInstance.deactivatedStub).toBeCalledTimes(0);
|
expect(pluginInstance.deactivatedStub).toBeCalledTimes(0);
|
||||||
expect(linksSeen).toEqual([]);
|
expect(linksSeen).toEqual([]);
|
||||||
@@ -964,6 +964,7 @@ test('Sandy plugins support isPluginSupported + selectPlugin', async () => {
|
|||||||
// star and navigate to a device plugin
|
// star and navigate to a device plugin
|
||||||
store.dispatch(starPlugin({plugin: definition3}));
|
store.dispatch(starPlugin({plugin: definition3}));
|
||||||
pluginInstance.selectPlugin(definition3.id);
|
pluginInstance.selectPlugin(definition3.id);
|
||||||
|
expect(pluginInstance.isPluginAvailable(definition3.id)).toBeTruthy();
|
||||||
expect(store.getState().connections.selectedPlugin).toBe(definition3.id);
|
expect(store.getState().connections.selectedPlugin).toBe(definition3.id);
|
||||||
expect(renderer.baseElement.querySelector('h1')).toMatchInlineSnapshot(`
|
expect(renderer.baseElement.querySelector('h1')).toMatchInlineSnapshot(`
|
||||||
<h1>
|
<h1>
|
||||||
|
|||||||
@@ -109,7 +109,10 @@ test('New device with same serial removes & cleans the old one', async () => {
|
|||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: device2,
|
payload: device2,
|
||||||
});
|
});
|
||||||
device2.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
device2.loadDevicePlugins(
|
||||||
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
|
|
||||||
expect(device.isArchived).toBe(false);
|
expect(device.isArchived).toBe(false);
|
||||||
expect(device.connected.get()).toBe(false);
|
expect(device.connected.get()).toBe(false);
|
||||||
|
|||||||
@@ -212,13 +212,16 @@ export default class BaseDevice {
|
|||||||
}
|
}
|
||||||
|
|
||||||
loadDevicePlugins(
|
loadDevicePlugins(
|
||||||
devicePlugins?: DevicePluginMap,
|
devicePlugins: DevicePluginMap,
|
||||||
|
enabledDevicePlugins: Set<string>,
|
||||||
pluginStates?: Record<string, any>,
|
pluginStates?: Record<string, any>,
|
||||||
) {
|
) {
|
||||||
if (!devicePlugins) {
|
if (!devicePlugins) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const plugins = Array.from(devicePlugins.values());
|
const plugins = Array.from(devicePlugins.values()).filter((p) =>
|
||||||
|
enabledDevicePlugins?.has(p.id),
|
||||||
|
);
|
||||||
for (const plugin of plugins) {
|
for (const plugin of plugins) {
|
||||||
this.loadDevicePlugin(plugin, pluginStates?.[plugin.id]);
|
this.loadDevicePlugin(plugin, pluginStates?.[plugin.id]);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -240,7 +240,10 @@ export default (store: Store, logger: Logger) => {
|
|||||||
payload: new Set(reconnectedDevices),
|
payload: new Set(reconnectedDevices),
|
||||||
});
|
});
|
||||||
|
|
||||||
androidDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
androidDevice.loadDevicePlugins(
|
||||||
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: androidDevice,
|
payload: androidDevice,
|
||||||
|
|||||||
@@ -22,7 +22,10 @@ export default (store: Store, _logger: Logger) => {
|
|||||||
} else {
|
} else {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
device.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
device.loadDevicePlugins(
|
||||||
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: device,
|
payload: device,
|
||||||
|
|||||||
@@ -134,7 +134,10 @@ function processDevices(
|
|||||||
serial: udid,
|
serial: udid,
|
||||||
});
|
});
|
||||||
const iOSDevice = new IOSDevice(udid, type, name);
|
const iOSDevice = new IOSDevice(udid, type, name);
|
||||||
iOSDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
iOSDevice.loadDevicePlugins(
|
||||||
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: iOSDevice,
|
payload: iOSDevice,
|
||||||
|
|||||||
@@ -57,7 +57,10 @@ export async function registerMetroDevice(
|
|||||||
name: metroDevice.title,
|
name: metroDevice.title,
|
||||||
});
|
});
|
||||||
|
|
||||||
metroDevice.loadDevicePlugins(store.getState().plugins.devicePlugins);
|
metroDevice.loadDevicePlugins(
|
||||||
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: metroDevice,
|
payload: metroDevice,
|
||||||
|
|||||||
@@ -124,7 +124,10 @@ export default class MockFlipper {
|
|||||||
type: 'REGISTER_DEVICE',
|
type: 'REGISTER_DEVICE',
|
||||||
payload: device,
|
payload: device,
|
||||||
});
|
});
|
||||||
device.loadDevicePlugins(this._store.getState().plugins.devicePlugins);
|
device.loadDevicePlugins(
|
||||||
|
this._store.getState().plugins.devicePlugins,
|
||||||
|
this.store.getState().connections.userStarredDevicePlugins,
|
||||||
|
);
|
||||||
this._devices.push(device);
|
this._devices.push(device);
|
||||||
return device;
|
return device;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -802,6 +802,7 @@ export function importDataToStore(source: string, data: string, store: Store) {
|
|||||||
});
|
});
|
||||||
archivedDevice.loadDevicePlugins(
|
archivedDevice.loadDevicePlugins(
|
||||||
store.getState().plugins.devicePlugins,
|
store.getState().plugins.devicePlugins,
|
||||||
|
store.getState().connections.userStarredDevicePlugins,
|
||||||
deserializeObject(device.pluginStates),
|
deserializeObject(device.pluginStates),
|
||||||
);
|
);
|
||||||
store.dispatch({
|
store.dispatch({
|
||||||
|
|||||||
Reference in New Issue
Block a user