15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyrightdd 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 338abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {function(string, *)} eventHandler 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.Object} 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 368abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)WebInspector.HeapSnapshotWorkerProxy = function(eventHandler) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 388abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this._eventHandler = eventHandler; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nextObjectId = 1; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._nextCallId = 1; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callbacks = []; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._previousCallbacks = []; 43f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu this._worker = new Worker("profiler/heap_snapshot_worker/HeapSnapshotWorker.js"); 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._worker.onmessage = this._messageReceived.bind(this); 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 478abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles)WebInspector.HeapSnapshotWorkerProxy.prototype = { 48a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) /** 4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} profileUid 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(!WebInspector.HeapSnapshotProxy)} snapshotReceivedCallback 51a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.HeapSnapshotLoaderProxy} 52a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) */ 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) createLoader: function(profileUid, snapshotReceivedCallback) 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var objectId = this._nextObjectId++; 5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var proxy = new WebInspector.HeapSnapshotLoaderProxy(this, objectId, profileUid, snapshotReceivedCallback); 57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._postMessage({callId: this._nextCallId++, disposition: "create", objectId: objectId, methodName: "WebInspector.HeapSnapshotLoader"}); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return proxy; 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispose: function() 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._worker.terminate(); 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._interval) 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) clearInterval(this._interval); 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) disposeObject: function(objectId) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._postMessage({callId: this._nextCallId++, disposition: "dispose", objectId: objectId}); 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) evaluateForTest: function(script, callback) 7409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) var callId = this._nextCallId++; 7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._callbacks[callId] = callback; 7709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._postMessage({callId: callId, disposition: "evaluateForTest", source: script}); 7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 7909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?function(...[?])} callback 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} objectId 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} methodName 8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(new:T, ...[?])} proxyConstructor 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?Object} 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @template T 8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 88926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) callFactoryMethod: function(callback, objectId, methodName, proxyConstructor) 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callId = this._nextCallId++; 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var methodArguments = Array.prototype.slice.call(arguments, 4); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var newObjectId = this._nextObjectId++; 93a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 9509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.HeapSnapshotWorkerProxy} 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 97a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) function wrapCallback(remoteResult) 98a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) { 99a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) callback(remoteResult ? new proxyConstructor(this, newObjectId) : null); 100a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 101a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) { 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callbacks[callId] = wrapCallback.bind(this); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._postMessage({callId: callId, disposition: "factory", objectId: objectId, methodName: methodName, methodArguments: methodArguments, newObjectId: newObjectId}); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return null; 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._postMessage({callId: callId, disposition: "factory", objectId: objectId, methodName: methodName, methodArguments: methodArguments, newObjectId: newObjectId}); 108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return new proxyConstructor(this, newObjectId); 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 11209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 11309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(*)} callback 11409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} objectId 11509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} methodName 11609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callMethod: function(callback, objectId, methodName) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callId = this._nextCallId++; 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var methodArguments = Array.prototype.slice.call(arguments, 3); 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (callback) 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callbacks[callId] = callback; 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._postMessage({callId: callId, disposition: "method", objectId: objectId, methodName: methodName, methodArguments: methodArguments}); 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) startCheckingForLongRunningCalls: function() 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._interval) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._checkLongRunningCalls(); 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._interval = setInterval(this._checkLongRunningCalls.bind(this), 300); 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _checkLongRunningCalls: function() 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var callId in this._previousCallbacks) 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(callId in this._callbacks)) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._previousCallbacks[callId]; 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var hasLongRunningCalls = false; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (callId in this._previousCallbacks) { 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) hasLongRunningCalls = true; 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) break; 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispatchEventToListeners("wait", hasLongRunningCalls); 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (callId in this._callbacks) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._previousCallbacks[callId] = true; 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 14909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 15009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!MessageEvent} event 15109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _messageReceived: function(event) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var data = event.data; 1558abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (data.eventName) { 1568abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (this._eventHandler) 1578abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) this._eventHandler(data.eventName, data.data); 1588abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) return; 1598abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) } 1608abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (data.error) { 1618abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (data.errorMethodName) 162f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebInspector.messageSink.addMessage(WebInspector.UIString("An error occurred when a call to method '%s' was requested", data.errorMethodName)); 163f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) WebInspector.messageSink.addMessage(data["errorCallStack"]); 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._callbacks[data.callId]; 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._callbacks[data.callId]) 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var callback = this._callbacks[data.callId]; 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) delete this._callbacks[data.callId]; 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(data.result); 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _postMessage: function(message) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._worker.postMessage(message); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.Object.prototype 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 185f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!WebInspector.HeapSnapshotWorkerProxy} worker 18609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} objectId 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProxyObject = function(worker, objectId) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._worker = worker; 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._objectId = objectId; 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProxyObject.prototype = { 19509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} workerMethodName 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!Array.<*>} args 19809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _callWorker: function(workerMethodName, args) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) args.splice(1, 0, this._objectId); 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._worker[workerMethodName].apply(this._worker, args); 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispose: function() 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._worker.disposeObject(this._objectId); 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) disposeWorker: function() 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._worker.dispose(); 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 21609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {?function(...[?])} callback 21709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} methodName 21809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function (new:T, ...[?])} proxyConstructor 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {...*} var_args 22007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {!T} 22109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @template T 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 223926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) callFactoryMethod: function(callback, methodName, proxyConstructor, var_args) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._callWorker("callFactoryMethod", Array.prototype.slice.call(arguments, 0)); 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 22809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 22909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(T)|undefined} callback 23009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} methodName 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {...*} var_args 23209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {*} 23309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @template T 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callMethod: function(callback, methodName, var_args) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._callWorker("callMethod", Array.prototype.slice.call(arguments, 0)); 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.HeapSnapshotProxyObject} 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @implements {WebInspector.OutputStream} 245f6b7aed3f7ce69aca0d7a032d144cbd088b04393Torne (Richard Coles) * @param {!WebInspector.HeapSnapshotWorkerProxy} worker 24609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} objectId 24709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} profileUid 24809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(!WebInspector.HeapSnapshotProxy)} snapshotReceivedCallback 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 25009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.HeapSnapshotLoaderProxy = function(worker, objectId, profileUid, snapshotReceivedCallback) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HeapSnapshotProxyObject.call(this, worker, objectId); 25309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._profileUid = profileUid; 25409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._snapshotReceivedCallback = snapshotReceivedCallback; 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotLoaderProxy.prototype = { 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} chunk 260a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.OutputStream)=} callback 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) write: function(chunk, callback) 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "write", chunk); 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2678abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) /** 2688abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) * @param {function()=} callback 2698abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) */ 2708abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) close: function(callback) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 27209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 27309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.HeapSnapshotLoaderProxy} 27409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function buildSnapshot() 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2778abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) if (callback) 2788abfc5808a4e34d6e03867af8bc440dee641886fTorne (Richard Coles) callback(); 27907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var showHiddenData = WebInspector.settings.showAdvancedHeapSnapshotProperties.get(); 28007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.callFactoryMethod(updateStaticData.bind(this), "buildSnapshot", WebInspector.HeapSnapshotProxy, showHiddenData); 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 28209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 28309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 28409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotProxy} snapshotProxy 28509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.HeapSnapshotLoaderProxy} 28609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function updateStaticData(snapshotProxy) 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.dispose(); 29009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) snapshotProxy.setProfileUid(this._profileUid); 29109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) snapshotProxy.updateStaticData(this._snapshotReceivedCallback.bind(this)); 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 29309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(buildSnapshot.bind(this), "close"); 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.HeapSnapshotProxyObject.prototype 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.HeapSnapshotProxyObject} 30409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotWorkerProxy} worker 30509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} objectId 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProxy = function(worker, objectId) 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HeapSnapshotProxyObject.call(this, worker, objectId); 31009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** @type {?WebInspector.HeapSnapshotCommon.StaticData} */ 31109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._staticData = null; 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProxy.prototype = { 315d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 316d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotCommon.NodeFilter} filter 317d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function(!Object.<string, !WebInspector.HeapSnapshotCommon.Aggregate>)} callback 318d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 319d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) aggregatesWithFilter: function(filter, callback) 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 321d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.callMethod(callback, "aggregatesWithFilter", filter); 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) aggregatesForDiff: function(callback) 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "aggregatesForDiff"); 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) calculateSnapshotDiff: function(baseSnapshotId, baseSnapshotAggregates, callback) 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "calculateSnapshotDiff", baseSnapshotId, baseSnapshotAggregates); 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodeClassName: function(snapshotObjectId, callback) 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "nodeClassName", snapshotObjectId); 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dominatorIdsForNode: function(nodeIndex, callback) 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "dominatorIdsForNode", nodeIndex); 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 34509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} nodeIndex 34607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {!WebInspector.HeapSnapshotProviderProxy} 34709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 34807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch createEdgesProvider: function(nodeIndex) 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 35007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.callFactoryMethod(null, "createEdgesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndex); 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 35309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 35409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} nodeIndex 35507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {!WebInspector.HeapSnapshotProviderProxy} 35609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 35707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch createRetainingEdgesProvider: function(nodeIndex) 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 35907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return this.callFactoryMethod(null, "createRetainingEdgesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndex); 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 36209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 36309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} baseSnapshotId 36409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} className 36509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.HeapSnapshotProviderProxy} 36609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createAddedNodesProvider: function(baseSnapshotId, className) 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 369926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.callFactoryMethod(null, "createAddedNodesProvider", WebInspector.HeapSnapshotProviderProxy, baseSnapshotId, className); 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 37209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 37309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!Array.<number>} nodeIndexes 37409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.HeapSnapshotProviderProxy} 37509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createDeletedNodesProvider: function(nodeIndexes) 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 378926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.callFactoryMethod(null, "createDeletedNodesProvider", WebInspector.HeapSnapshotProviderProxy, nodeIndexes); 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 38209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(*):boolean} filter 38309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.HeapSnapshotProviderProxy} 38409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createNodesProvider: function(filter) 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 387926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.callFactoryMethod(null, "createNodesProvider", WebInspector.HeapSnapshotProviderProxy, filter); 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 39009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 39109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {string} className 392d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotCommon.NodeFilter} nodeFilter 39309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.HeapSnapshotProviderProxy} 39409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 395d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) createNodesProviderForClass: function(className, nodeFilter) 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 397d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return this.callFactoryMethod(null, "createNodesProviderForClass", WebInspector.HeapSnapshotProviderProxy, className, nodeFilter); 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 40109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} nodeIndex 40209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {?WebInspector.HeapSnapshotProviderProxy} 40309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) createNodesProviderForDominator: function(nodeIndex) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 406926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this.callFactoryMethod(null, "createNodesProviderForDominator", WebInspector.HeapSnapshotProviderProxy, nodeIndex); 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 40906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) allocationTracesTops: function(callback) 41006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 41106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this.callMethod(callback, "allocationTracesTops"); 41206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 41306f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 41443e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) /** 41543e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {number} nodeId 41643e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) * @param {function(!WebInspector.HeapSnapshotCommon.AllocationNodeCallers)} callback 41743e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) */ 41806f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) allocationNodeCallers: function(nodeId, callback) 41906f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) { 42006f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) this.callMethod(callback, "allocationNodeCallers", nodeId); 42106f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) }, 42206f816c7c76bc45a15e452ade8a34e8af077693eTorne (Richard Coles) 423a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 424a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {number} nodeIndex 425a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @param {function(?Array.<!WebInspector.HeapSnapshotCommon.AllocationStackFrame>)} callback 426a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 427a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch allocationStack: function(nodeIndex, callback) 428a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 429a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch this.callMethod(callback, "allocationStack", nodeIndex); 430a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 431a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispose: function() 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 43409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) throw new Error("Should never be called"); 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get nodeCount() 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._staticData.nodeCount; 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get rootNodeIndex() 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._staticData.rootNodeIndex; 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) updateStaticData: function(callback) 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 44909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 45009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotCommon.StaticData} staticData 45109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @this {WebInspector.HeapSnapshotProxy} 45209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function dataReceived(staticData) 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._staticData = staticData; 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) callback(this); 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(dataReceived.bind(this), "updateStaticData"); 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 461d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 462d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!function(!WebInspector.HeapSnapshotCommon.Statistics):void} callback 463d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 464d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) getStatistics: function(callback) 465d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) { 466d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.callMethod(callback, "getStatistics"); 467d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) }, 468d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get totalSize() 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._staticData.totalSize; 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get uid() 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 47609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._profileUid; 47709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 47809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 47909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) setProfileUid: function(profileUid) 48009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 48109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._profileUid = profileUid; 48209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) }, 48309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 48409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 48509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {number} 48609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 48709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) maxJSObjectId: function() 48809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) { 48909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return this._staticData.maxJSObjectId; 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.HeapSnapshotProxyObject.prototype 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.HeapSnapshotProxyObject} 499d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @implements {WebInspector.HeapSnapshotGridNode.ChildrenProvider} 50009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotWorkerProxy} worker 50109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} objectId 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProviderProxy = function(worker, objectId) 5045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.HeapSnapshotProxyObject.call(this, worker, objectId); 5065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.HeapSnapshotProviderProxy.prototype = { 509d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 510d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 511d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {number} snapshotObjectId 512d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function(number)} callback 513d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) nodePosition: function(snapshotObjectId, callback) 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "nodePosition", snapshotObjectId); 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 519d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 520d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 521d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function(boolean)} callback 522d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isEmpty: function(callback) 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "isEmpty"); 5265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 52809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 529d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 53009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} startPosition 53109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {number} endPosition 53209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {function(!WebInspector.HeapSnapshotCommon.ItemsRange)} callback 53309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) serializeItemsRange: function(startPosition, endPosition, callback) 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "serializeItemsRange", startPosition, endPosition); 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 539d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) /** 540d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @override 541d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {!WebInspector.HeapSnapshotCommon.ComparatorConfig} comparator 542d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function()} callback 543d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) sortAndRewind: function(comparator, callback) 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.callMethod(callback, "sortAndRewind", comparator); 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.HeapSnapshotProxyObject.prototype 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 551