166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Copyright (c) 2013 The Chromium Authors. All rights reserved. 266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// Use of this source code is governed by a BSD-style license that can be 366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis// found in the LICENSE file. 466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis'use strict'; 666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('ui'); 866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.exportTo('tracing.analysis', function() { 1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var ObjectSnapshotView = ui.define('object-snapshot-view'); 1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.prototype = { 1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis __proto__: HTMLDivElement.prototype, 1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis decorate: function() { 1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.objectSnapshot_ = undefined; 1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis set modelObject(obj) { 2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.objectSnapshot = obj; 2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis get modelObject() { 2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.objectSnapshot; 2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis get objectSnapshot() { 2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return this.objectSnapshot_; 2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis set objectSnapshot(i) { 3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.objectSnapshot_ = i; 3366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis this.updateContents(); 3466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }, 3566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 3666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis updateContents: function() { 3766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis throw new Error('Not implemented'); 3866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis } 3966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 4066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 4166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.typeNameToViewInfoMap = {}; 4266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.register = function(typeName, 4366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis viewConstructor, 4466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis opt_options) { 4566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (ObjectSnapshotView.typeNameToViewInfoMap[typeName]) 4666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis throw new Error('Handler already registered for ' + typeName); 4766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis var options = opt_options || { 4866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis showInTrackView: true 4966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 5066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.typeNameToViewInfoMap[typeName] = { 5166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis constructor: viewConstructor, 5266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis options: options 5366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 5466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 5566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 5666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.unregister = function(typeName) { 5766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis if (ObjectSnapshotView.typeNameToViewInfoMap[typeName] === undefined) 5866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis throw new Error(typeName + ' not registered'); 5966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis delete ObjectSnapshotView.typeNameToViewInfoMap[typeName]; 6066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView.getViewInfo = function(typeName) { 6366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return ObjectSnapshotView.typeNameToViewInfoMap[typeName]; 6466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis 6666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis return { 6766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis ObjectSnapshotView: ObjectSnapshotView 6866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis }; 6966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis}); 70