Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(566)

Unified Diff: tracing/tracing/ui/extras/side_panel/frame_data_side_panel_test.html

Issue 1996303002: [Tracing] Introduce Frame Data Side Panel (Closed) Base URL: https://github.com/catapult-project/catapult.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tracing/tracing/ui/extras/side_panel/frame_data_side_panel.html ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/ui/extras/side_panel/frame_data_side_panel_test.html
diff --git a/tracing/tracing/ui/extras/side_panel/frame_data_side_panel_test.html b/tracing/tracing/ui/extras/side_panel/frame_data_side_panel_test.html
new file mode 100644
index 0000000000000000000000000000000000000000..c9ec9ff025b363601251706702e2778041318ad5
--- /dev/null
+++ b/tracing/tracing/ui/extras/side_panel/frame_data_side_panel_test.html
@@ -0,0 +1,165 @@
+<!DOCTYPE html>
+<!--
+Copyright 2016 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.
+-->
+
+<link rel="import" href="/tracing/core/test_utils.html">
+<link rel="import" href="/tracing/extras/chrome/blame_context/frame_tree_node.html">
+<link rel="import" href="/tracing/extras/chrome/blame_context/render_frame.html">
+<link rel="import" href="/tracing/extras/chrome/blame_context/top_level.html">
+<link rel="import" href="/tracing/ui/extras/side_panel/frame_data_side_panel.html">
+
+<script>
+'use strict';
+
+tr.b.unittest.testSuite(function() {
+ var TestUtils = tr.c.TestUtils;
+
+ function topLevelOptions(pid, id) {
+ return {
+ pid: pid,
+ id: id,
+ cat: 'blink',
+ scope: 'PlatformThread',
+ name: 'TopLevel'
+ };
+ }
+
+ function renderFrameOptions(pid, id, parent) {
+ return {
+ pid: pid,
+ id: id,
+ cat: 'blink',
+ scope: 'RenderFrame',
+ name: 'RenderFrame',
+ args: {parent: {
+ id_ref: parent.id,
+ scope: parent.scope
+ }}
+ };
+ }
+
+ function frameTreeNodeOptions(pid, id, opt_renderFrame, opt_parentId) {
+ var ans = {
+ pid: pid,
+ id: id,
+ cat: 'navigation',
+ scope: 'FrameTreeNode',
+ name: 'FrameTreeNode',
+ args: {}
+ };
+ if (opt_renderFrame) {
+ ans.args.renderFrame = {
+ id_ref: opt_renderFrame.id,
+ pid_ref: opt_renderFrame.pid,
+ scope: 'RenderFrame'
+ };
+ }
+ if (opt_parentId) {
+ ans.args.parent = {
+ id_ref: opt_parentId,
+ scope: 'FrameTreeNode'
+ };
+ }
+ return ans;
+ }
+
+ /**
+ * Creates some independent contexts. Checks if all are present in the panel.
+ */
+ test('basic', function() {
+ var panel = document.createElement('tr-ui-e-s-frame-data-side-panel');
+ panel.model = TestUtils.newModel(function(model) {
+ TestUtils.newSnapshot(model, topLevelOptions(1, '0x1'));
+ TestUtils.newSnapshot(model, renderFrameOptions(
+ 1, '0x2', {id: '0x1', scope: 'PlatformThread'}));
+ TestUtils.newSnapshot(model, frameTreeNodeOptions(
+ 2, '0x3'));
+ });
+ assert.lengthOf(panel.$.table.tableRows, 3);
+
+ this.addHTMLOutput(panel);
+ });
+
+ /**
+ * Creates a FrameTreeNode in the browser process and a RenderFrame in a
+ * renderer process that are the same frame. Checks if they are merged into
+ * one row in the panel.
+ */
+ test('mergeCrossProcessFrameBlameContexts', function() {
+ var panel = document.createElement('tr-ui-e-s-frame-data-side-panel');
+ panel.model = TestUtils.newModel(function(model) {
+ TestUtils.newSnapshot(model, topLevelOptions(1, '0x1'));
+ TestUtils.newSnapshot(model, renderFrameOptions(
+ 1, '0x2', {id: '0x1', scope: 'PlatformThread'}));
+ TestUtils.newSnapshot(model, frameTreeNodeOptions(
+ 2, '0x3', {id: '0x2', pid: 1}));
+ });
+ assert.lengthOf(panel.$.table.tableRows, 2);
+
+ this.addHTMLOutput(panel);
+ });
+
+ function newAttributedSlice(model, pid, start, duration, context) {
+ var slice = TestUtils.newSliceEx({start: start, duration: duration});
+ slice.contexts = [{type: 'FrameBlameContext', snapshot: context}];
+ model.getOrCreateProcess(pid).getOrCreateThread(1).sliceGroup.pushSlice(
+ slice);
+ return slice;
+ }
+
+ /**
+ * Changes the range of interest. Checks if the panel updates correspondingly.
+ */
+ test('respondToRangeOfInterest', function() {
+ var topLevel;
+ var slice1;
+ var slice2;
+ var panel = document.createElement('tr-ui-e-s-frame-data-side-panel');
+ panel.model = TestUtils.newModel(function(model) {
+ topLevel = TestUtils.newSnapshot(model, topLevelOptions(1, '0x1'));
+ slice1 = newAttributedSlice(model, 1, 1500, 500, topLevel);
+ slice2 = newAttributedSlice(model, 1, 2500, 500, topLevel);
+ });
+
+ // The default range of interest contains both slices.
+ assert.isTrue(panel.$.table.tableRows[0].eventsOfInterest.equals(
+ new tr.model.EventSet([topLevel, slice1, slice2])));
+
+ // The new range of interest contains only slice2.
+ panel.rangeOfInterest = tr.b.Range.fromExplicitRange(slice2.start,
+ slice2.end);
+ assert.isTrue(panel.$.table.tableRows[0].eventsOfInterest.equals(
+ new tr.model.EventSet([topLevel, slice2])));
+
+ this.addHTMLOutput(panel);
+ });
+
+ /**
+ * Selects a row in the panel. Checks if the context(s) of the row and the
+ * slices attributed to the row are selected.
+ */
+ test('selectAttributedEvents', function() {
+ var topLevel;
+ var slice;
+ var panel = document.createElement('tr-ui-e-s-frame-data-side-panel');
+ panel.model = TestUtils.newModel(function(model) {
+ topLevel = TestUtils.newSnapshot(model, topLevelOptions(1, '0x1'));
+ slice = newAttributedSlice(model, 1, 1500, 500, topLevel);
+ });
+
+ var selectionChanged = false;
+ panel.addEventListener('requestSelectionChange', function(e) {
+ selectionChanged = true;
+ assert.isTrue(
+ e.selection.equals(new tr.model.EventSet([topLevel, slice])));
+ });
+ panel.$.table.selectedTableRow = panel.$.table.tableRows[0];
+ assert.isTrue(selectionChanged);
+
+ this.addHTMLOutput(panel);
+ });
+});
+</script>
« no previous file with comments | « tracing/tracing/ui/extras/side_panel/frame_data_side_panel.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698