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 are 665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * met: 765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * * Redistributions of source code must retain the above copyright 965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * notice, this list of conditions and the following disclaimer. 1065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * * Redistributions in binary form must reproduce the above 1165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * copyright notice, this list of conditions and the following disclaimer 1265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * in the documentation and/or other materials provided with the 1365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * distribution. 1465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * * Neither the name of Google Inc. nor the names of its 1565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * contributors may be used to endorse or promote products derived from 1665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * this software without specific prior written permission. 1765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * 1865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 2065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 2165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch */ 3065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#ifndef InspectorBrowserDebuggerAgent_h 3265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#define InspectorBrowserDebuggerAgent_h 3365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER) && ENABLE(INSPECTOR) 3565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 3681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorDebuggerAgent.h" 3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "PlatformString.h" 3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/HashMap.h> 3965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/PassOwnPtr.h> 4065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include <wtf/RefCounted.h> 4165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochnamespace WebCore { 4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 4465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass Element; 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass InspectorAgent; 4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorDOMAgent; 4781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorDebuggerAgent; 4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorFrontend; 4965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass InspectorObject; 5081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorState; 5181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InstrumentingAgents; 5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass Node; 5365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochtypedef String ErrorString; 5581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 5681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochclass InspectorBrowserDebuggerAgent : public InspectorDebuggerAgent::Listener { 57ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WTF_MAKE_NONCOPYABLE(InspectorBrowserDebuggerAgent); 5865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochpublic: 5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch static PassOwnPtr<InspectorBrowserDebuggerAgent> create(InstrumentingAgents*, InspectorState*, InspectorDOMAgent*, InspectorDebuggerAgent*, InspectorAgent*); 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch virtual ~InspectorBrowserDebuggerAgent(); 6265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 6381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void clearFrontend(); 6481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 6565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // BrowserDebugger API for InspectorFrontend 662bde8e466a4451c7319e3a072d118917957d6554Steve Block void setXHRBreakpoint(ErrorString*, const String& url); 672bde8e466a4451c7319e3a072d118917957d6554Steve Block void removeXHRBreakpoint(ErrorString*, const String& url); 682bde8e466a4451c7319e3a072d118917957d6554Steve Block void setEventListenerBreakpoint(ErrorString*, const String& eventName); 692bde8e466a4451c7319e3a072d118917957d6554Steve Block void removeEventListenerBreakpoint(ErrorString*, const String& eventName); 702bde8e466a4451c7319e3a072d118917957d6554Steve Block void setDOMBreakpoint(ErrorString*, int nodeId, int type); 712bde8e466a4451c7319e3a072d118917957d6554Steve Block void removeDOMBreakpoint(ErrorString*, int nodeId, int type); 7265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 7365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // InspectorInstrumentation API 7465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void willInsertDOMNode(Node*, Node* parent); 7565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didInsertDOMNode(Node*); 7665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void willRemoveDOMNode(Node*); 7765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void didRemoveDOMNode(Node*); 7865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void willModifyDOMAttr(Element*); 7965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void willSendXMLHttpRequest(const String& url); 8065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void pauseOnNativeEventIfNeeded(const String& categoryType, const String& eventName, bool synchronous); 8165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 8265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochprivate: 8381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorBrowserDebuggerAgent(InstrumentingAgents*, InspectorState*, InspectorDOMAgent*, InspectorDebuggerAgent*, InspectorAgent*); 8481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 8581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // InspectorDebuggerAgent::Listener implementation. 8681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void debuggerWasEnabled(); 8781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch virtual void debuggerWasDisabled(); 8881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void disable(); 8965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 902bde8e466a4451c7319e3a072d118917957d6554Steve Block void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, InspectorObject* description); 9165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void updateSubtreeBreakpoints(Node*, uint32_t rootMask, bool set); 922bde8e466a4451c7319e3a072d118917957d6554Steve Block bool hasBreakpoint(Node*, int type); 9365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch void discardBindings(); 9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 9581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch void clear(); 9681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 9781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InstrumentingAgents* m_instrumentingAgents; 9881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorState* m_inspectorState; 9981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorDOMAgent* m_domAgent; 10081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch InspectorDebuggerAgent* m_debuggerAgent; 1012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block InspectorAgent* m_inspectorAgent; 102ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch HashMap<Node*, uint32_t> m_domBreakpoints; 10365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}; 10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch} // namespace WebCore 10665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // ENABLE(JAVASCRIPT_DEBUGGER) && ENABLE(INSPECTOR) 10865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 10965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif // !defined(InspectorBrowserDebuggerAgent_h) 110