mirror of
https://github.com/angular/angular.git
synced 2026-09-14 13:54:52 +08:00
263b819a75
This commit adds some state on the bus to prevent sending unecessary messages to the main window.
65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google LLC All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.dev/license
|
|
*/
|
|
|
|
import {AngularDetection} from '../../../protocol';
|
|
import {
|
|
appIsAngular,
|
|
appIsAngularInDevMode,
|
|
appIsAngularIvy,
|
|
appIsSupportedAngularVersion,
|
|
} from '../../../shared-utils';
|
|
import {getContentScriptUri, getDetectAngularScriptUri} from './comm-utils';
|
|
|
|
import {SamePageMessageBus} from './same-page-message-bus';
|
|
|
|
const detectAngularMessageBus = new SamePageMessageBus(
|
|
'[DetectAngular=>CS]',
|
|
getDetectAngularScriptUri(),
|
|
getContentScriptUri(),
|
|
);
|
|
|
|
let detectAngularTimeout: ReturnType<typeof setTimeout>;
|
|
function detectAngular(win: Window): void {
|
|
const isAngular = appIsAngular();
|
|
const isSupportedAngularVersion = appIsSupportedAngularVersion();
|
|
const isDebugMode = appIsAngularInDevMode();
|
|
const isIvy = appIsAngularIvy();
|
|
|
|
const detection: AngularDetection = {
|
|
isIvy,
|
|
isAngular,
|
|
isDebugMode,
|
|
isSupportedAngularVersion,
|
|
isAngularDevTools: true,
|
|
};
|
|
|
|
// For the background script to toggle the icon.
|
|
win.postMessage(detection, '*');
|
|
|
|
// For the content script to inject the backend.
|
|
detectAngularMessageBus.emit('detectAngular', [
|
|
{
|
|
isIvy,
|
|
isAngular,
|
|
isDebugMode,
|
|
isSupportedAngularVersion,
|
|
isAngularDevTools: true,
|
|
},
|
|
]);
|
|
|
|
detectAngularTimeout = setTimeout(() => {
|
|
detectAngular(win);
|
|
}, 1000);
|
|
}
|
|
|
|
detectAngularMessageBus.on('backendInstalled', (detection) => {
|
|
clearTimeout(detectAngularTimeout);
|
|
});
|
|
|
|
detectAngular(window);
|