1e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)// found in the LICENSE file.
4e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
5e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#ifndef ConsoleMessage_h
6e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#define ConsoleMessage_h
7e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
8e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "bindings/core/v8/ScriptState.h"
9e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/frame/ConsoleTypes.h"
109e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)#include "core/inspector/ConsoleAPITypes.h"
11e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "core/inspector/ScriptCallStack.h"
12e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "platform/heap/Handle.h"
13e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "wtf/Forward.h"
14e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "wtf/PassRefPtr.h"
15e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "wtf/RefCounted.h"
16e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#include "wtf/text/WTFString.h"
17e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
18e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)namespace blink {
19e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
209e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)class ScriptArguments;
21e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class ScriptCallStack;
22e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class ScriptState;
23e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class WorkerGlobalScopeProxy;
24e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
25e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class ConsoleMessage FINAL: public RefCountedWillBeGarbageCollectedFinalized<ConsoleMessage> {
26e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)public:
27e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    static PassRefPtrWillBeRawPtr<ConsoleMessage> create(MessageSource source, MessageLevel level, const String& message, const String& url = String(), unsigned lineNumber = 0, unsigned columnNumber = 0)
28e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    {
29e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)        return adoptRefWillBeNoop(new ConsoleMessage(source, level, message, url, lineNumber, columnNumber));
30e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    }
31e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    ~ConsoleMessage();
32e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
339e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    MessageType type() const;
349e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setType(MessageType);
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    int scriptId() const;
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void setScriptId(int);
379e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    const String& url() const;
389e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setURL(const String&);
399e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    unsigned lineNumber() const;
409e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setLineNumber(unsigned);
41e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    PassRefPtrWillBeRawPtr<ScriptCallStack> callStack() const;
42e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    void setCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack>);
43e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    ScriptState* scriptState() const;
44e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    void setScriptState(ScriptState*);
459e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    PassRefPtrWillBeRawPtr<ScriptArguments> scriptArguments() const;
469e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    void setScriptArguments(PassRefPtrWillBeRawPtr<ScriptArguments>);
47e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned long requestIdentifier() const;
48e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    void setRequestIdentifier(unsigned long);
497242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double timestamp() const;
507242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void setTimestamp(double);
517242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    WorkerGlobalScopeProxy* workerGlobalScopeProxy() { return m_workerProxy; }
527242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void setWorkerGlobalScopeProxy(WorkerGlobalScopeProxy* proxy) { m_workerProxy = proxy; }
53e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    MessageSource source() const;
55e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    MessageLevel level() const;
56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    const String& message() const;
57e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned columnNumber() const;
58e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
597242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void frameWindowDiscarded(LocalDOMWindow*);
607242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    unsigned argumentCount();
617242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
627242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    void collectCallStack();
637242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
64e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    void trace(Visitor*);
65e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
66e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)private:
67e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    ConsoleMessage(MessageSource, MessageLevel, const String& message, const String& url = String(), unsigned lineNumber = 0, unsigned columnNumber = 0);
68e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
69e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    MessageSource m_source;
70e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    MessageLevel m_level;
719e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    MessageType m_type;
72e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    String m_message;
737242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    int m_scriptId;
74e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    String m_url;
75e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned m_lineNumber;
76e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned m_columnNumber;
77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    RefPtrWillBeMember<ScriptCallStack> m_callStack;
789e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    OwnPtr<ScriptStateProtectingContext> m_scriptState;
799e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles)    RefPtrWillBeMember<ScriptArguments> m_scriptArguments;
80e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    unsigned long m_requestIdentifier;
817242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double m_timestamp;
82e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WorkerGlobalScopeProxy* m_workerProxy;
83e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)};
84e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
85e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)} // namespace blink
86e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)
87e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)#endif // ConsoleMessage_h
88