165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch/* 265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Copyright (C) 2011 Google Inc. All rights reserved. 365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * Redistribution and use in source and binary forms, with or without 565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * modification, are permitted provided that the following conditions 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * are met: 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1. Redistributions of source code must retain the above copyright 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer. 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer in the 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * documentation and/or other materials provided with the distribution. 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef InspectorConsoleAgent_h 2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define InspectorConsoleAgent_h 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Console.h" 2981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorFrontend.h" 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Forward.h> 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/HashMap.h> 3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Noncopyable.h> 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/text/StringHash.h> 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/Vector.h> 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebCore { 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(INSPECTOR) 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ConsoleMessage; 412fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass InspectorAgent; 4281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorDOMAgent; 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass InspectorFrontend; 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass InspectorState; 452bde8e466a4451c7319e3a072d118917957d6554Steve Blockclass InjectedScriptManager; 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InstrumentingAgents; 4765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ResourceError; 4865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ResourceResponse; 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ScriptArguments; 5065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ScriptCallStack; 5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass ScriptProfile; 5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochtypedef String ErrorString; 5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 55ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdochclass InspectorConsoleAgent { 56ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent); 5765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic: 582bde8e466a4451c7319e3a072d118917957d6554Steve Block InspectorConsoleAgent(InstrumentingAgents*, InspectorAgent*, InspectorState*, InjectedScriptManager*, InspectorDOMAgent*); 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ~InspectorConsoleAgent(); 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 612bde8e466a4451c7319e3a072d118917957d6554Steve Block void enable(ErrorString*, int* consoleMessageExpireCount); 622bde8e466a4451c7319e3a072d118917957d6554Steve Block void disable(ErrorString*); 6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void clearConsoleMessages(ErrorString* error); 6465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void reset(); 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void setFrontend(InspectorFrontend*); 6681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void clearFrontend(); 6765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, PassRefPtr<ScriptArguments>, PassRefPtr<ScriptCallStack>); 6965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, unsigned lineNumber, const String& sourceID); 7065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void startTiming(const String& title); 7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void stopTiming(const String& title, PassRefPtr<ScriptCallStack>); 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void count(PassRefPtr<ScriptArguments>, PassRefPtr<ScriptCallStack>); 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void resourceRetrievedByXMLHttpRequest(const String& url, const String& sendURL, unsigned sendLineNumber); 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didReceiveResponse(unsigned long identifier, const ResourceResponse&); 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didFailLoading(unsigned long identifier, const ResourceError&); 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER) 7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addProfileFinishedMessageToConsole(PassRefPtr<ScriptProfile>, unsigned lineNumber, const String& sourceURL); 8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addStartProfilingMessageToConsole(const String& title, unsigned lineNumber, const String& sourceURL); 8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 8281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void setMonitoringXHREnabled(ErrorString* error, bool enabled); 832bde8e466a4451c7319e3a072d118917957d6554Steve Block void addInspectedNode(ErrorString*, int nodeId); 8465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate: 8665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void addConsoleMessage(PassOwnPtr<ConsoleMessage>); 8765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InstrumentingAgents* m_instrumentingAgents; 892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block InspectorAgent* m_inspectorAgent; 9081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorState* m_inspectorState; 912bde8e466a4451c7319e3a072d118917957d6554Steve Block InjectedScriptManager* m_injectedScriptManager; 9281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorDOMAgent* m_inspectorDOMAgent; 9381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorFrontend::Console* m_frontend; 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch ConsoleMessage* m_previousMessage; 9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch Vector<OwnPtr<ConsoleMessage> > m_consoleMessages; 962bde8e466a4451c7319e3a072d118917957d6554Steve Block int m_expiredConsoleMessageCount; 9765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashMap<String, unsigned> m_counts; 9865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch HashMap<String, double> m_times; 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}; 10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif 10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebCore 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // !defined(InspectorConsoleAgent_h) 106