1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5/**
6 * @constructor
7 * @extends {WebInspector.Object}
8 */
9WebInspector.MessageSink = function()
10{
11    /** @type {!Array.<!WebInspector.MessageSink.Message>} */
12    this._messages = [];
13}
14
15/**
16 * @enum {string}
17 */
18WebInspector.MessageSink.Events = {
19    MessageAdded: "messageAdded"
20}
21
22/**
23 * @enum {string}
24 */
25WebInspector.MessageSink.MessageLevel = {
26    Log: "log",
27    Warning: "warning",
28    Error: "error"
29}
30
31/**
32 * @constructor
33 * @param {string} text
34 * @param {!WebInspector.MessageSink.MessageLevel} level
35 * @param {number} timestamp
36 * @param {boolean} show
37 */
38WebInspector.MessageSink.Message = function(text, level, timestamp, show)
39{
40    this.text = text;
41    this.level = level;
42    this.timestamp = (typeof timestamp === "number") ? timestamp : Date.now();
43    this.show = show;
44}
45
46WebInspector.MessageSink.prototype = {
47    /**
48     * @param {string} text
49     * @param {!WebInspector.MessageSink.MessageLevel=} level
50     * @param {boolean=} show
51     */
52    addMessage: function(text, level, show)
53    {
54        var message = new WebInspector.MessageSink.Message(text, level || WebInspector.MessageSink.MessageLevel.Log, Date.now(), show || false);
55        this._messages.push(message);
56        this.dispatchEventToListeners(WebInspector.MessageSink.Events.MessageAdded, message);
57    },
58
59    /**
60     * @param {string} text
61     * @param {boolean=} show
62     */
63    addErrorMessage: function(text, show)
64    {
65        this.addMessage(text, WebInspector.MessageSink.MessageLevel.Error, show);
66    },
67
68    /**
69     * @return {!Array.<!WebInspector.MessageSink.Message>}
70     */
71    messages: function()
72    {
73        return this._messages;
74    },
75
76    __proto__: WebInspector.Object.prototype
77}
78
79WebInspector.messageSink = new WebInspector.MessageSink();
80