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