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('tracing.trace_model.object_instance');
866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.require('tracing.trace_model.object_snapshot');
966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennisbase.unittest.testSuite('tracing.trace_model.object_snapshot', function() {
1166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  test('snapshotTypeRegistry', function() {
1266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    function MySnapshot() {
1366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      tracing.trace_model.ObjectSnapshot.apply(this, arguments);
1466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      this.myFoo = this.args.foo;
1566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    }
1666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
1766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    MySnapshot.prototype = {
1866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      __proto__: tracing.trace_model.ObjectSnapshot.prototype
1966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    };
2066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis
2166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    var instance = new tracing.trace_model.ObjectInstance(
2266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis        {}, '0x1000', 'cat', 'MySnapshot', 10);
2366a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    try {
2466a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      tracing.trace_model.ObjectSnapshot.register('MySnapshot', MySnapshot);
2566a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      var snapshot = instance.addSnapshot(15, {foo: 'bar'});
2666a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertTrue(snapshot instanceof MySnapshot);
2766a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      assertEquals('bar', snapshot.myFoo);
2866a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    } finally {
2966a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis      tracing.trace_model.ObjectSnapshot.unregister('MySnapshot');
3066a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis    }
3166a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis  });
3266a37686207944273ced825e0e8b6b6375f8c3deJamie Gennis});
33