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

View File

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

View File

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

View File

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

View File

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