18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu * Copyright (C) 2009, 2010 Google Inc. All rights reserved.
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.  Redistributions of source code must retain the above copyright
118f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *     notice, this list of conditions and the following disclaimer.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2.  Redistributions in binary form must reproduce the above copyright
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     notice, this list of conditions and the following disclaimer in the
148f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *     documentation and/or other materials provided with the distribution.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *     its contributors may be used to endorse or promote products derived
178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian *     from this software without specific prior written permission.
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
318f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#ifndef ConsoleMessage_h
328f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#define ConsoleMessage_h
338f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
348f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "Console.h"
3581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorFrontend.h"
368f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include "ScriptState.h"
378f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
3828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include <wtf/Forward.h>
398f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#include <wtf/Vector.h>
408f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
418f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qiannamespace WebCore {
422bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass InjectedScriptManager;
43e8b154fd68f9b33be40a3590e58347f353835f5cSteve Blockclass InspectorFrontend;
440617145a89917ae7735fe1c9538688ab9a577df5Kristian Monsenclass InspectorObject;
4528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhuclass ScriptArguments;
46967717af5423377c967781471ee106e2bb4e11c8Ben Murdochclass ScriptCallFrame;
47dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockclass ScriptCallStack;
48dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdochclass ScriptValue;
498f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
50ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass ConsoleMessage {
51ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    WTF_MAKE_NONCOPYABLE(ConsoleMessage); WTF_MAKE_FAST_ALLOCATED;
52dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockpublic:
53f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, unsigned li, const String& u);
54f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, PassRefPtr<ScriptArguments>, PassRefPtr<ScriptCallStack>);
55f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    ConsoleMessage(MessageSource, MessageType, MessageLevel, const String& m, const String& responseUrl, unsigned long identifier);
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    ~ConsoleMessage();
578f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
582bde8e466a4451c7319e3a072d118917957d6554Steve Block    void addToFrontend(InspectorFrontend::Console*, InjectedScriptManager*);
5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    void updateRepeatCountInConsole(InspectorFrontend::Console*);
60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    void incrementCount() { ++m_repeatCount; }
61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    bool isEqual(ConsoleMessage* msg) const;
628f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    MessageSource source() const { return m_source; }
64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    const String& message() const { return m_message; }
652bde8e466a4451c7319e3a072d118917957d6554Steve Block    MessageType type() const { return m_type; }
660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch
67dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockprivate:
68dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    MessageSource m_source;
69dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    MessageType m_type;
70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    MessageLevel m_level;
71dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    String m_message;
72f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    RefPtr<ScriptArguments> m_arguments;
73f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    RefPtr<ScriptCallStack> m_callStack;
74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unsigned m_line;
75dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    String m_url;
76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block    unsigned m_repeatCount;
77f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch    unsigned int m_requestId;
78dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block};
79635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project
808f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian} // namespace WebCore
818f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian
828f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian#endif // ConsoleMessage_h
83