1197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch// found in the LICENSE file. 4197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 5197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 6197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @constructor 7197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @extends {WebInspector.Object} 8197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 9197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console = function() 10197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 11197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** @type {!Array.<!WebInspector.Console.Message>} */ 12197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._messages = []; 13197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 14197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 15197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 16197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @enum {string} 17197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 18197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.Events = { 19197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch MessageAdded: "messageAdded" 20197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 21197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 22197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 23197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @enum {string} 24197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 25197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.MessageLevel = { 26197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Log: "log", 27197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Warning: "warning", 28197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch Error: "error" 29197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 31197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 32197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @constructor 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} text 34197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Console.MessageLevel} level 35197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {number} timestamp 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {boolean} show 37197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 38197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.Message = function(text, level, timestamp, show) 39197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.text = text; 41197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.level = level; 42197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.timestamp = (typeof timestamp === "number") ? timestamp : Date.now(); 43197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.show = show; 44197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 45197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 46197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch/** 47197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @interface 48197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 49197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.UIDelegate = function() 50197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch{ 51197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 52197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 53197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.UIDelegate.prototype = { 54197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch showConsole: function() { } 55197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 56197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 57197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.Console.prototype = { 58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 59197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Console.UIDelegate} uiDelegate 60197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 61197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch setUIDelegate: function(uiDelegate) 62197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 63197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._uiDelegate = uiDelegate; 64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 65197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 66197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 67197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} text 68197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {!WebInspector.Console.MessageLevel} level 69197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {boolean=} show 70197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 71197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch addMessage: function(text, level, show) 72197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 73197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch var message = new WebInspector.Console.Message(text, level || WebInspector.Console.MessageLevel.Log, Date.now(), show || false); 74197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._messages.push(message); 75197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.dispatchEventToListeners(WebInspector.Console.Events.MessageAdded, message); 76197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 77197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 78197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 79197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} text 80197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 81197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch log: function(text) 82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 83197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.addMessage(text, WebInspector.Console.MessageLevel.Log); 84197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 85197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 86197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 87197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} text 88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 89197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch warn: function(text) 90197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 91197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.addMessage(text, WebInspector.Console.MessageLevel.Warning); 92197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 93197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 95197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @param {string} text 96197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 97197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch error: function(text) 98197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 99197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.addMessage(text, WebInspector.Console.MessageLevel.Error, true); 100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 101197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 102197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch /** 103197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {!Array.<!WebInspector.Console.Message>} 104197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch */ 105197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch messages: function() 106197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 107197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch return this._messages; 108197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 109197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 110197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch show: function() 111197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch { 112197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch if (this._uiDelegate) 113197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this._uiDelegate.showConsole(); 114197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch }, 115197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 116197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch __proto__: WebInspector.Object.prototype 117197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch} 118197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 119197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.console = new WebInspector.Console(); 120