| // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| // This file is loaded before the about:tracing code is loaded so that we have | |
| // an event listener registered early. | |
| // Used to delay the initial timeline load until the timeline has finished | |
| // loading. | |
| timeline_loaded = false; | |
| timeline_vm_address = undefined; | |
| timeline_isolates = undefined; | |
| function registerForMessages() { | |
| window.addEventListener("message", onMessage, false); | |
| window.addEventListener("hashchange", onHashChange, false); | |
| } | |
| registerForMessages(); | |
| function onMessage(event) { | |
| var request = JSON.parse(event.data); | |
| var method = request['method']; | |
| var params = request['params']; | |
| console.log('method: ' + method) | |
| switch (method) { | |
| case 'loading': | |
| showLoadingOverlay('Fetching timeline...'); | |
| break; | |
| case 'refresh': | |
| timeline_vm_address = params['vmAddress']; | |
| timeline_isolates = params['isolateIds']; | |
| if (typeof fetchTimeline === "undefined") { | |
| console.log('Delaying timeline refresh until loaded.'); | |
| } else { | |
| fetchTimeline(timeline_vm_address, timeline_isolates); | |
| } | |
| break; | |
| case 'clear': | |
| clearTimeline(); | |
| break; | |
| case 'save': | |
| saveTimeline(); | |
| break; | |
| case 'load': | |
| loadTimeline(); | |
| break; | |
| default: | |
| console.log('Unknown method:' + method + '.'); | |
| } | |
| } | |
| function onHashChange() { | |
| refreshTimeline(); | |
| } | |
| console.log('message handler registered'); |