1// Copyright (C) 2018 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15import '../tracks/all_controller';
16
17import {Remote} from '../base/remote';
18import {warmupWasmEngine} from '../common/wasm_engine_proxy';
19
20import {AppController} from './app_controller';
21import {globals} from './globals';
22
23function main(port: MessagePort) {
24  warmupWasmEngine();
25  let receivedFrontendPort = false;
26  port.onmessage = ({data}) => {
27    if (receivedFrontendPort) {
28      globals.dispatch(data);
29      return;
30    }
31
32    const frontendPort = data as MessagePort;
33    const frontend = new Remote(frontendPort);
34    globals.initialize(new AppController(), frontend);
35    receivedFrontendPort = true;
36  };
37}
38
39main(self as {} as MessagePort);
40
41// For devtools-based debugging.
42(self as {} as {globals: {}}).globals = globals;
43