Fix activatePlugin measurements not completing

Summary:
`activatePlugin` events where not recorded correctly for Sandy plugins. Although the starting measuerments is fired the `connections` reducer, the completing event fires from `PluginContainer`. Since this is done as part of a ref-update (!!), see [here](https://www.internalfb.com/intern/diffusion/FBS/browse/master/xplat/sonar/desktop/app/src/PluginContainer.tsx?commit=65a625ea9941&lines=155), and the ref to the corresponding element is not set for Sandy plugins, the event was never marked as completed.
Fixed this by making it part of the `activate` life-cycle event of Sandy plugins.

Reviewed By: passy

Differential Revision: D25421537

fbshipit-source-id: 5cbfeb91cc12e4520fa271bab24034094d7ddb39
This commit is contained in:
Michel Weststrate
2020-12-09 05:31:13 -08:00
committed by Facebook GitHub Bot
parent 8dc321c1ee
commit 4832d6275b
5 changed files with 13 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ import type {Logger} from '../fb-interfaces/Logger';
import type {Store} from '../reducers';
import createPaste from '../fb-stubs/createPaste';
import GK from '../fb-stubs/GK';
import {getInstance} from '../fb-stubs/Logger';
let flipperLibInstance: FlipperLib | undefined;
@@ -22,6 +23,7 @@ export function initializeFlipperLibImplementation(
// late require to avoid cyclic dependency
const {addSandyPluginEntries} = require('../MenuBar');
flipperLibInstance = {
logger: getInstance(),
enableMenuEntries(entries) {
addSandyPluginEntries(entries);
},

View File

@@ -7,12 +7,14 @@
* @format
*/
import {Logger} from '../utils/Logger';
import {NormalizedMenuEntry} from './MenuEntry';
/**
* This interface exposes all global methods for which an implementation will be provided by Flipper itself
*/
export interface FlipperLib {
logger: Logger;
enableMenuEntries(menuEntries: NormalizedMenuEntry[]): void;
createPaste(input: string): Promise<string | undefined>;
GK(gatekeeper: string): boolean;

View File

@@ -172,6 +172,9 @@ export abstract class BasePluginInstance {
this.activated = true;
this.flipperLib.enableMenuEntries(this.menuEntries);
this.events.emit('activate');
this.flipperLib.logger.trackTimeSince(
`activePlugin-${this.definition.id}`,
);
}
}

View File

@@ -36,6 +36,7 @@ import {
} from '../plugin/DevicePlugin';
import {BasePluginInstance} from '../plugin/PluginBase';
import {FlipperLib} from '../plugin/FlipperLib';
import {stubLogger} from '../utils/Logger';
type Renderer = RenderResult<typeof queries>;
@@ -346,6 +347,7 @@ export function renderDevicePlugin<Module extends FlipperDevicePluginModule>(
export function createMockFlipperLib(options?: StartPluginOptions): FlipperLib {
return {
logger: stubLogger,
enableMenuEntries: jest.fn(),
createPaste: jest.fn(),
GK(gk: string) {

View File

@@ -35,7 +35,7 @@ export interface Logger {
debug(data: any, category: string): void;
}
export const _LoggerContext = createContext<Logger>({
export const stubLogger: Logger = {
track() {},
trackTimeSince() {},
info() {
@@ -54,7 +54,9 @@ export const _LoggerContext = createContext<Logger>({
// eslint-disable-next-line
console.debug.apply(console, arguments as any);
},
});
};
export const _LoggerContext = createContext<Logger>(stubLogger);
/**
* Provides the default logger that can be used for console logging,