// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

/**
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

* WARNING: This file is generated by generate_about_tracing_contents.py
*
*        Do not edit directly.
*/

window.FLATTENED = {};
window.FLATTENED['base'] = true;
window.FLATTENED['event_target'] = true;
window.FLATTENED['measuring_stick'] = true;
window.FLATTENED['filter'] = true;
window.FLATTENED['range'] = true;
window.FLATTENED['selection'] = true;
window.FLATTENED['timeline_viewport'] = true;
window.FLATTENED['ui'] = true;
window.FLATTENED['tracks.track'] = true;
window.FLATTENED['tracks.container_track'] = true;
window.FLATTENED['fast_rect_renderer'] = true;
window.FLATTENED['color_scheme'] = true;
window.FLATTENED['tracks.canvas_based_track'] = true;
window.FLATTENED['sorted_array_utils'] = true;
window.FLATTENED['tracks.slice_track'] = true;
window.FLATTENED['guid'] = true;
window.FLATTENED['model.slice'] = true;
window.FLATTENED['model.slice_group'] = true;
window.FLATTENED['model.async_slice_group'] = true;
window.FLATTENED['model.sample'] = true;
window.FLATTENED['model.thread'] = true;
window.FLATTENED['model.counter'] = true;
window.FLATTENED['model.process_base'] = true;
window.FLATTENED['model.process'] = true;
window.FLATTENED['model.kernel'] = true;
window.FLATTENED['model.cpu'] = true;
window.FLATTENED['model'] = true;
window.FLATTENED['tracks.cpu_track'] = true;
window.FLATTENED['tracks.counter_track'] = true;
window.FLATTENED['tracks.slice_group_track'] = true;
window.FLATTENED['tracks.async_slice_group_track'] = true;
window.FLATTENED['tracks.thread_track'] = true;
window.FLATTENED['tracks.process_track'] = true;
window.FLATTENED['tracks.model_track'] = true;
window.FLATTENED['tracks.ruler_track'] = true;
window.FLATTENED['timeline_track_view'] = true;
window.FLATTENED['analysis.util'] = true;
window.FLATTENED['timeline_analysis_view'] = true;
window.FLATTENED['overlay'] = true;
window.FLATTENED['category_filter_dialog'] = true;
window.FLATTENED['find_control'] = true;
window.FLATTENED['importer.trace_event_importer'] = true;
window.FLATTENED['importer.linux_perf.parser'] = true;
window.FLATTENED['importer.linux_perf.bus_parser'] = true;
window.FLATTENED['importer.linux_perf.clock_parser'] = true;
window.FLATTENED['importer.linux_perf.cpufreq_parser'] = true;
window.FLATTENED['importer.linux_perf.disk_parser'] = true;
window.FLATTENED['importer.linux_perf.drm_parser'] = true;
window.FLATTENED['importer.linux_perf.exynos_parser'] = true;
window.FLATTENED['importer.linux_perf.gesture_parser'] = true;
window.FLATTENED['importer.linux_perf.i915_parser'] = true;
window.FLATTENED['importer.linux_perf.mali_parser'] = true;
window.FLATTENED['importer.linux_perf.power_parser'] = true;
window.FLATTENED['importer.linux_perf.sched_parser'] = true;
window.FLATTENED['importer.linux_perf.workqueue_parser'] = true;
window.FLATTENED['importer.linux_perf.android_parser'] = true;
window.FLATTENED['importer.linux_perf.kfunc_parser'] = true;
window.FLATTENED['importer.linux_perf_importer'] = true;
window.FLATTENED['importer.v8.log_reader'] = true;
window.FLATTENED['importer.v8.splaytree'] = true;
window.FLATTENED['importer.v8.codemap'] = true;
window.FLATTENED['importer.v8_log_importer'] = true;
window.FLATTENED['settings'] = true;
window.FLATTENED['timeline_view'] = true;
window.FLATTENED['tracing_controller'] = true;
window.FLATTENED['profiling_view'] = true;
<include src="base.js">
<include src="event_target.js">
<include src="measuring_stick.js">
<include src="filter.js">
<include src="range.js">
<include src="selection.js">
<include src="timeline_viewport.js">
<include src="ui.js">
<include src="tracks/track.js">
<include src="tracks/container_track.js">
<include src="fast_rect_renderer.js">
<include src="color_scheme.js">
<include src="tracks/canvas_based_track.js">
<include src="sorted_array_utils.js">
<include src="tracks/slice_track.js">
<include src="guid.js">
<include src="model/slice.js">
<include src="model/slice_group.js">
<include src="model/async_slice_group.js">
<include src="model/sample.js">
<include src="model/thread.js">
<include src="model/counter.js">
<include src="model/process_base.js">
<include src="model/process.js">
<include src="model/kernel.js">
<include src="model/cpu.js">
<include src="model.js">
<include src="tracks/cpu_track.js">
<include src="tracks/counter_track.js">
<include src="tracks/slice_group_track.js">
<include src="tracks/async_slice_group_track.js">
<include src="tracks/thread_track.js">
<include src="tracks/process_track.js">
<include src="tracks/model_track.js">
<include src="tracks/ruler_track.js">
<include src="timeline_track_view.js">
<include src="analysis/util.js">
<include src="timeline_analysis_view.js">
<include src="overlay.js">
<include src="category_filter_dialog.js">
<include src="find_control.js">
<include src="importer/trace_event_importer.js">
<include src="importer/linux_perf/parser.js">
<include src="importer/linux_perf/bus_parser.js">
<include src="importer/linux_perf/clock_parser.js">
<include src="importer/linux_perf/cpufreq_parser.js">
<include src="importer/linux_perf/disk_parser.js">
<include src="importer/linux_perf/drm_parser.js">
<include src="importer/linux_perf/exynos_parser.js">
<include src="importer/linux_perf/gesture_parser.js">
<include src="importer/linux_perf/i915_parser.js">
<include src="importer/linux_perf/mali_parser.js">
<include src="importer/linux_perf/power_parser.js">
<include src="importer/linux_perf/sched_parser.js">
<include src="importer/linux_perf/workqueue_parser.js">
<include src="importer/linux_perf/android_parser.js">
<include src="importer/linux_perf/kfunc_parser.js">
<include src="importer/linux_perf_importer.js">
<include src="importer/v8/log_reader.js">
<include src="importer/v8/splaytree.js">
<include src="importer/v8/codemap.js">
<include src="importer/v8_log_importer.js">
<include src="settings.js">
<include src="timeline_view.js">
<include src="tracing_controller.js">
<include src="profiling_view.js">


var tracingController;
var profilingView;  // Made global for debugging purposes only.

document.addEventListener('DOMContentLoaded', function() {
  tracingController = new tracing.TracingController(
      chrome.send.bind(chrome));

  profilingView = document.body.querySelector('#profiling-view');
  tracing.ui.decorate(profilingView, tracing.ProfilingView);
  profilingView.tracingController = tracingController;
});
