1a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch/*
265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch* Copyright (C) 2011 Google Inc. All rights reserved.
3a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*
4a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* Redistribution and use in source and binary forms, with or without
5a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* modification, are permitted provided that the following conditions are
6a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* met:
7a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*
8a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*     * Redistributions of source code must retain the above copyright
9a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* notice, this list of conditions and the following disclaimer.
10a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*     * Redistributions in binary form must reproduce the above
11a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* copyright notice, this list of conditions and the following disclaimer
12a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* in the documentation and/or other materials provided with the
13a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* distribution.
14a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*     * Neither the name of Google Inc. nor the names of its
15a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* contributors may be used to endorse or promote products derived from
16a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* this software without specific prior written permission.
17a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*
18a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch*/
30a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
31a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "config.h"
32a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "InspectorInstrumentation.h"
33a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
34a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(INSPECTOR)
35a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
36a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "DOMWindow.h"
3765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "Database.h"
3865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "DocumentLoader.h"
39a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "Event.h"
406b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner#include "EventContext.h"
412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorAgent.h"
4265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorApplicationCacheAgent.h"
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorBrowserDebuggerAgent.h"
4481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorCSSAgent.h"
4565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorConsoleAgent.h"
4681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorDatabaseAgent.h"
47a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "InspectorDOMAgent.h"
4881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InspectorDOMStorageAgent.h"
49a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "InspectorDebuggerAgent.h"
502bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "InspectorPageAgent.h"
5165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorProfilerAgent.h"
5265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "InspectorResourceAgent.h"
53a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "InspectorTimelineAgent.h"
5481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InstrumentingAgents.h"
5565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ScriptArguments.h"
5665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "ScriptCallStack.h"
57a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include "XMLHttpRequest.h"
58a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#include <wtf/text/CString.h>
59a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
60a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochnamespace WebCore {
61a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
62a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic const char* const listenerEventCategoryType = "listener";
63a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic const char* const instrumentationEventCategoryType = "instrumentation";
64a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
65a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic const char* const setTimerEventName = "setTimer";
66a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic const char* const clearTimerEventName = "clearTimer";
67a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochstatic const char* const timerFiredEventName = "timerFired";
68a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
692fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockHashMap<Page*, InspectorAgent*>& InspectorInstrumentation::inspectorAgents()
702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{
712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    static HashMap<Page*, InspectorAgent*>& agents = *new HashMap<Page*, InspectorAgent*>;
722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return agents;
732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block}
742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
75a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochint InspectorInstrumentation::s_frontendCounter = 0;
76a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
776b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerstatic bool eventHasListeners(const AtomicString& eventType, DOMWindow* window, Node* node, const Vector<EventContext>& ancestors)
78a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
79a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (window && window->hasEventListeners(eventType))
80a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
81a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
82a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (node->hasEventListeners(eventType))
83a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return true;
84a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
85a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    for (size_t i = 0; i < ancestors.size(); i++) {
866b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner        Node* ancestor = ancestors[i].node();
87a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        if (ancestor->hasEventListeners(eventType))
88a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch            return true;
89a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
90a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
91a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return false;
92a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
93a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
942fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didClearWindowObjectInWorldImpl(InspectorAgent* inspectorAgent, Frame* frame, DOMWrapperWorld* world)
9565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
962bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorPageAgent* pageAgent = inspectorAgent->instrumentingAgents()->inspectorPageAgent())
972bde8e466a4451c7319e3a072d118917957d6554Steve Block        pageAgent->didClearWindowObjectInWorld(frame, world);
982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->didClearWindowObjectInWorld(frame, world);
9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
10065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1012fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::inspectedPageDestroyedImpl(InspectorAgent* inspectorAgent)
10265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
1032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->inspectedPageDestroyed();
10465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
10565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1062fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::willInsertDOMNodeImpl(InspectorAgent* inspectorAgent, Node* node, Node* parent)
107a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
108a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
10981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
11065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->willInsertDOMNode(node, parent);
111a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
112a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
113a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1142fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didInsertDOMNodeImpl(InspectorAgent* inspectorAgent, Node* node)
115a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
1162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->domAgent())
117a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        domAgent->didInsertDOMNode(node);
11865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
11981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
12065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->didInsertDOMNode(node);
12165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
122a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
123a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1242fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::willRemoveDOMNodeImpl(InspectorAgent* inspectorAgent, Node* node)
125a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
126a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
12865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->willRemoveDOMNode(node);
129a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
130a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
131a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1322fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didRemoveDOMNodeImpl(InspectorAgent* inspectorAgent, Node* node)
133a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
13465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
13581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
13665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->didRemoveDOMNode(node);
13765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
1382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->domAgent())
139a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        domAgent->didRemoveDOMNode(node);
140a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
141a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1422fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::willModifyDOMAttrImpl(InspectorAgent* inspectorAgent, Element* element)
143a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
144a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
14581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
14665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->willModifyDOMAttr(element);
147a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
148a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
149a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1502fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didModifyDOMAttrImpl(InspectorAgent* inspectorAgent, Element* element)
151a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
1522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->domAgent())
153a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        domAgent->didModifyDOMAttr(element);
154a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
155a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
15681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid InspectorInstrumentation::didInvalidateStyleAttrImpl(InspectorAgent* inspectorAgent, Node* node)
15781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{
15881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDOMAgent* domAgent = inspectorAgent->domAgent())
15981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        domAgent->didInvalidateStyleAttr(node);
16081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch}
16181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
1622fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::mouseDidMoveOverElementImpl(InspectorAgent* inspectorAgent, const HitTestResult& result, unsigned modifierFlags)
16365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
1642bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->instrumentingAgents()->inspectorDOMAgent())
1652bde8e466a4451c7319e3a072d118917957d6554Steve Block        domAgent->mouseDidMoveOverElement(result, modifierFlags);
16665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
16765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1682fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool InspectorInstrumentation::handleMousePressImpl(InspectorAgent* inspectorAgent)
16965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
1702bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->instrumentingAgents()->inspectorDOMAgent())
1712bde8e466a4451c7319e3a072d118917957d6554Steve Block        return domAgent->handleMousePress();
1722bde8e466a4451c7319e3a072d118917957d6554Steve Block    return false;
17365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
17465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
1752fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::characterDataModifiedImpl(InspectorAgent* inspectorAgent, CharacterData* characterData)
176a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->domAgent())
178a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        domAgent->characterDataModified(characterData);
179a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
180a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1812fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::willSendXMLHttpRequestImpl(InspectorAgent* inspectorAgent, const String& url)
182a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
183a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
18481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
18565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->willSendXMLHttpRequest(url);
186a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
187a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
188a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1892fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didScheduleResourceRequestImpl(InspectorAgent* inspectorAgent, const String& url)
190a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
1912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
192a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didScheduleResourceRequest(url);
193a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
194a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
1952fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didInstallTimerImpl(InspectorAgent* inspectorAgent, int timerId, int timeout, bool singleShot)
196a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
1972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    pauseOnNativeEventIfNeeded(inspectorAgent, instrumentationEventCategoryType, setTimerEventName, true);
1982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
199a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didInstallTimer(timerId, timeout, singleShot);
200a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
201a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2022fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didRemoveTimerImpl(InspectorAgent* inspectorAgent, int timerId)
203a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
2042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    pauseOnNativeEventIfNeeded(inspectorAgent, instrumentationEventCategoryType, clearTimerEventName, true);
2052fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
206a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didRemoveTimer(timerId);
207a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
208a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2092fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willCallFunctionImpl(InspectorAgent* inspectorAgent, const String& scriptName, int scriptLine)
210a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
211a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
2122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
213a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
214a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willCallFunction(scriptName, scriptLine);
215a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
216a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
2172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
218a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
219a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
220a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didCallFunctionImpl(const InspectorInstrumentationCookie& cookie)
221a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
222a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
223a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didCallFunction();
224a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
225a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2262fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willChangeXHRReadyStateImpl(InspectorAgent* inspectorAgent, XMLHttpRequest* request)
227a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
228a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
2292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
230a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent && request->hasEventListeners(eventNames().readystatechangeEvent)) {
231a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willChangeXHRReadyState(request->url().string(), request->readyState());
232a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
233a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
2342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
235a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
236a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
237a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didChangeXHRReadyStateImpl(const InspectorInstrumentationCookie& cookie)
238a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
239a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
240a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didChangeXHRReadyState();
241a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
242a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2432fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willDispatchEventImpl(InspectorAgent* inspectorAgent, const Event& event, DOMWindow* window, Node* node, const Vector<EventContext>& ancestors)
244a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
2452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    pauseOnNativeEventIfNeeded(inspectorAgent, listenerEventCategoryType, event.type(), false);
246a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
247a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
2482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
249a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent && eventHasListeners(event.type(), window, node, ancestors)) {
250a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willDispatchEvent(event);
251a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
252a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
2532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
254a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
255a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
256a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didDispatchEventImpl(const InspectorInstrumentationCookie& cookie)
257a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
258a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    cancelPauseOnNativeEvent(cookie.first);
259a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
260a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
261a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didDispatchEvent();
262a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
263a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2642fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willDispatchEventOnWindowImpl(InspectorAgent* inspectorAgent, const Event& event, DOMWindow* window)
265a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
2662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    pauseOnNativeEventIfNeeded(inspectorAgent, listenerEventCategoryType, event.type(), false);
267a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
268a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
2692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
270a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent && window->hasEventListeners(event.type())) {
271a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willDispatchEvent(event);
272a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
273a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
2742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
275a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
276a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
277a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didDispatchEventOnWindowImpl(const InspectorInstrumentationCookie& cookie)
278a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
279a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    cancelPauseOnNativeEvent(cookie.first);
280a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
281a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
282a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didDispatchEvent();
283a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
284a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
2852fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willEvaluateScriptImpl(InspectorAgent* inspectorAgent, const String& url, int lineNumber)
286a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
287a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
2882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
289a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
290a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willEvaluateScript(url, lineNumber);
291a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
292a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
2932fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
294a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
295a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
296a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didEvaluateScriptImpl(const InspectorInstrumentationCookie& cookie)
297a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
298a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
299a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didEvaluateScript();
300a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
301a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3022fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willFireTimerImpl(InspectorAgent* inspectorAgent, int timerId)
303a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
3042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    pauseOnNativeEventIfNeeded(inspectorAgent, instrumentationEventCategoryType, timerFiredEventName, false);
305a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
306a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
3072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
308a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
309a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willFireTimer(timerId);
310a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
311a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
3122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
313a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
314a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
315a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didFireTimerImpl(const InspectorInstrumentationCookie& cookie)
316a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
317a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    cancelPauseOnNativeEvent(cookie.first);
318a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
319a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
320a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didFireTimer();
321a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
322a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3232fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willLayoutImpl(InspectorAgent* inspectorAgent)
324a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
325a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
3262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
327a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
328a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willLayout();
329a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
330a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
3312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
332a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
333a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
334a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didLayoutImpl(const InspectorInstrumentationCookie& cookie)
335a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
336a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
337a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didLayout();
338a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
339a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3402fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willLoadXHRImpl(InspectorAgent* inspectorAgent, XMLHttpRequest* request)
341a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
342a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
3432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
344a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent && request->hasEventListeners(eventNames().loadEvent)) {
345a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willLoadXHR(request->url());
346a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
347a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
3482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
349a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
350a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
351a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didLoadXHRImpl(const InspectorInstrumentationCookie& cookie)
352a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
353a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
354a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didLoadXHR();
355a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
356a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3572fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willPaintImpl(InspectorAgent* inspectorAgent, const IntRect& rect)
358a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
359a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
3602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
361a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
362a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willPaint(rect);
363a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
364a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
3652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
366a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
367a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
368a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didPaintImpl(const InspectorInstrumentationCookie& cookie)
369a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
370a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
371a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didPaint();
372a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
373a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3742fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willRecalculateStyleImpl(InspectorAgent* inspectorAgent)
375a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
376a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
3772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
378a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
379a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willRecalculateStyle();
380a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
381a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
3822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
383a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
384a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
385a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didRecalculateStyleImpl(const InspectorInstrumentationCookie& cookie)
386a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
387a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
388a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didRecalculateStyle();
389a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
390a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
3912fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::applyUserAgentOverrideImpl(InspectorAgent* inspectorAgent, String* userAgent)
39265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
3932bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorPageAgent* pageAgent = retrievePageAgent(inspectorAgent))
3942bde8e466a4451c7319e3a072d118917957d6554Steve Block        pageAgent->applyUserAgentOverride(userAgent);
3952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block}
3962fc2651226baac27029e38c9d6ef883fa32084dbSteve Block
3972bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid InspectorInstrumentation::willSendRequestImpl(InspectorAgent* inspectorAgent, unsigned long identifier, DocumentLoader* loader, ResourceRequest& request, const ResourceResponse& redirectResponse)
3982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{
3992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
40065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        timelineAgent->willSendResourceRequest(identifier, request);
4012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
4022bde8e466a4451c7319e3a072d118917957d6554Steve Block        resourceAgent->willSendRequest(identifier, loader, request, redirectResponse);
40365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
40465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4052fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::markResourceAsCachedImpl(InspectorAgent* inspectorAgent, unsigned long identifier)
40665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
40865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        resourceAgent->markResourceAsCached(identifier);
40965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
41065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4112fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didLoadResourceFromMemoryCacheImpl(InspectorAgent* inspectorAgent, DocumentLoader* loader, const CachedResource* cachedResource)
41265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (!inspectorAgent->enabled())
41465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        return;
4152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
41665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        resourceAgent->didLoadResourceFromMemoryCache(loader, cachedResource);
41765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
41865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4192fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willReceiveResourceDataImpl(InspectorAgent* inspectorAgent, unsigned long identifier)
420a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
421a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
4222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
423a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
424a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willReceiveResourceData(identifier);
425a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
426a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
4272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
428a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
429a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
430a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didReceiveResourceDataImpl(const InspectorInstrumentationCookie& cookie)
431a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
432a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
433a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didReceiveResourceData();
434a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
435a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
4362fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willReceiveResourceResponseImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const ResourceResponse& response)
437a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
438a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
4392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
440a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
441a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willReceiveResourceResponse(identifier, response);
442a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
443a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
4442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
445a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
446a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
44765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochvoid InspectorInstrumentation::didReceiveResourceResponseImpl(const InspectorInstrumentationCookie& cookie, unsigned long identifier, DocumentLoader* loader, const ResourceResponse& response)
448a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
449a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
450a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didReceiveResourceResponse();
4512bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (!loader)
4522bde8e466a4451c7319e3a072d118917957d6554Steve Block        return;
4532bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorAgent* inspectorAgent = inspectorAgentForFrame(loader->frame())) {
4542bde8e466a4451c7319e3a072d118917957d6554Steve Block        if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
4552bde8e466a4451c7319e3a072d118917957d6554Steve Block            resourceAgent->didReceiveResponse(identifier, loader, response);
4562bde8e466a4451c7319e3a072d118917957d6554Steve Block        inspectorAgent->consoleAgent()->didReceiveResponse(identifier, response); // This should come AFTER resource notification, front-end relies on this.
4572bde8e466a4451c7319e3a072d118917957d6554Steve Block    }
458a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
459a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
4602daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid InspectorInstrumentation::didReceiveResourceResponseButCanceledImpl(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r)
4612daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
4622daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    InspectorInstrumentationCookie cookie = InspectorInstrumentation::willReceiveResourceResponse(frame, identifier, r);
4632daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    InspectorInstrumentation::didReceiveResourceResponse(cookie, identifier, loader, r);
4642daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
4652daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4662daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid InspectorInstrumentation::continueAfterXFrameOptionsDeniedImpl(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r)
4672daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
4682daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    didReceiveResourceResponseButCanceledImpl(frame, loader, identifier, r);
4692daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
4702daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4712daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid InspectorInstrumentation::continueWithPolicyDownloadImpl(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r)
4722daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
4732daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    didReceiveResourceResponseButCanceledImpl(frame, loader, identifier, r);
4742daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
4752daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4762daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid InspectorInstrumentation::continueWithPolicyIgnoreImpl(Frame* frame, DocumentLoader* loader, unsigned long identifier, const ResourceResponse& r)
4772daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch{
4782daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    didReceiveResourceResponseButCanceledImpl(frame, loader, identifier, r);
4792daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}
4802daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
4812daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochvoid InspectorInstrumentation::didReceiveContentLengthImpl(InspectorAgent* inspectorAgent, unsigned long identifier, int dataLength, int encodedDataLength)
48265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
4842daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        resourceAgent->didReceiveContentLength(identifier, dataLength, encodedDataLength);
48565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
48665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4872fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didFinishLoadingImpl(InspectorAgent* inspectorAgent, unsigned long identifier, double finishTime)
48865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
49065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        timelineAgent->didFinishLoadingResource(identifier, false, finishTime);
4912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
49265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        resourceAgent->didFinishLoading(identifier, finishTime);
49365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
49465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
4952fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didFailLoadingImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const ResourceError& error)
49665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
4972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent))
49865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        timelineAgent->didFinishLoadingResource(identifier, true, 0);
4992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
50065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        resourceAgent->didFailLoading(identifier, error);
5012bde8e466a4451c7319e3a072d118917957d6554Steve Block    inspectorAgent->consoleAgent()->didFailLoading(identifier, error); // This should come AFTER resource notification, front-end relies on this.
50265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
50365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5042fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::resourceRetrievedByXMLHttpRequestImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const String& sourceString, const String& url, const String& sendURL, unsigned sendLineNumber)
50565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->resourceRetrievedByXMLHttpRequest(url, sendURL, sendLineNumber);
5072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
5082daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        resourceAgent->setInitialXHRContent(identifier, sourceString);
50965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
51065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5112fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::scriptImportedImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const String& sourceString)
51265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
5142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        resourceAgent->setInitialScriptContent(identifier, sourceString);
51565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
51665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5172fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::domContentLoadedEventFiredImpl(InspectorAgent* inspectorAgent, Frame* frame, const KURL& url)
51865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5192bde8e466a4451c7319e3a072d118917957d6554Steve Block    DocumentLoader* documentLoader = frame->loader()->documentLoader();
5202bde8e466a4451c7319e3a072d118917957d6554Steve Block    ASSERT(documentLoader);
5212bde8e466a4451c7319e3a072d118917957d6554Steve Block
5222bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (frame->page()->mainFrame() != frame || url != documentLoader->requestURL())
5232bde8e466a4451c7319e3a072d118917957d6554Steve Block        return;
5242bde8e466a4451c7319e3a072d118917957d6554Steve Block
5252bde8e466a4451c7319e3a072d118917957d6554Steve Block    inspectorAgent->domContentLoadedEventFired();
5262bde8e466a4451c7319e3a072d118917957d6554Steve Block
5272bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->instrumentingAgents()->inspectorDOMAgent())
5282bde8e466a4451c7319e3a072d118917957d6554Steve Block        domAgent->mainFrameDOMContentLoaded();
5292bde8e466a4451c7319e3a072d118917957d6554Steve Block
5302bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorTimelineAgent* timelineAgent = inspectorAgent->instrumentingAgents()->inspectorTimelineAgent())
5312bde8e466a4451c7319e3a072d118917957d6554Steve Block        timelineAgent->didMarkDOMContentEvent();
5322bde8e466a4451c7319e3a072d118917957d6554Steve Block
5332daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    if (InspectorResourceAgent* resourceAgent = inspectorAgent->instrumentingAgents()->inspectorResourceAgent())
5342daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        resourceAgent->domContentEventFired();
5352daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5362bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorPageAgent* pageAgent = inspectorAgent->instrumentingAgents()->inspectorPageAgent())
5372bde8e466a4451c7319e3a072d118917957d6554Steve Block        pageAgent->domContentEventFired();
53865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
53965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5402fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::loadEventFiredImpl(InspectorAgent* inspectorAgent, Frame* frame, const KURL& url)
54165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5422bde8e466a4451c7319e3a072d118917957d6554Steve Block    DocumentLoader* documentLoader = frame->loader()->documentLoader();
5432bde8e466a4451c7319e3a072d118917957d6554Steve Block    ASSERT(documentLoader);
5442bde8e466a4451c7319e3a072d118917957d6554Steve Block
5452bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorDOMAgent* domAgent = inspectorAgent->instrumentingAgents()->inspectorDOMAgent())
5462bde8e466a4451c7319e3a072d118917957d6554Steve Block        domAgent->loadEventFired(documentLoader->frame()->document());
5472bde8e466a4451c7319e3a072d118917957d6554Steve Block
5482bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (frame->page()->mainFrame() != frame || url != documentLoader->requestURL())
5492bde8e466a4451c7319e3a072d118917957d6554Steve Block        return;
5502bde8e466a4451c7319e3a072d118917957d6554Steve Block
5512bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorTimelineAgent* timelineAgent = inspectorAgent->instrumentingAgents()->inspectorTimelineAgent())
5522bde8e466a4451c7319e3a072d118917957d6554Steve Block        timelineAgent->didMarkLoadEvent();
5532bde8e466a4451c7319e3a072d118917957d6554Steve Block
5542daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch    if (InspectorResourceAgent* resourceAgent = inspectorAgent->instrumentingAgents()->inspectorResourceAgent())
5552daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch        resourceAgent->loadEventFired();
5562daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch
5572bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorPageAgent* pageAgent = inspectorAgent->instrumentingAgents()->inspectorPageAgent())
5582bde8e466a4451c7319e3a072d118917957d6554Steve Block        pageAgent->loadEventFired();
55965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
56065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
5612fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::frameDetachedFromParentImpl(InspectorAgent* inspectorAgent, Frame* frame)
56265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
5632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
56465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        resourceAgent->frameDetachedFromParent(frame);
56565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
56665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
56781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid InspectorInstrumentation::didCommitLoadImpl(Page* page, InspectorAgent* inspectorAgent, DocumentLoader* loader)
56865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
56981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (!inspectorAgent->enabled())
57081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return;
57181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
57281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    InstrumentingAgents* instrumentingAgents = inspectorAgent->instrumentingAgents();
57381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorResourceAgent* resourceAgent = instrumentingAgents->inspectorResourceAgent())
57481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        resourceAgent->didCommitLoad(loader);
57581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
57681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    Frame* mainFrame = page->mainFrame();
57781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (loader->frame() != mainFrame)
57881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return;
57981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch
58081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorConsoleAgent* consoleAgent = instrumentingAgents->inspectorConsoleAgent())
58181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        consoleAgent->reset();
58281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
58381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDebuggerAgent* debuggerAgent = instrumentingAgents->inspectorDebuggerAgent()) {
58481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        KURL url = inspectorAgent->inspectedURLWithoutFragment();
58581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        debuggerAgent->inspectedURLChanged(url);
58681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    }
58781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif
58881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER) && USE(JSC)
58981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorProfilerAgent* profilerAgent = instrumentingAgents->inspectorProfilerAgent()) {
59081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        profilerAgent->stopUserInitiatedProfiling(true);
59181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        profilerAgent->resetState();
59281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    }
59381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif
59481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorCSSAgent* cssAgent = instrumentingAgents->inspectorCSSAgent())
59581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        cssAgent->reset();
59681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DATABASE)
59781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDatabaseAgent* databaseAgent = instrumentingAgents->inspectorDatabaseAgent())
59881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        databaseAgent->clearResources();
59981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif
60081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DOM_STORAGE)
60181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDOMStorageAgent* domStorageAgent = instrumentingAgents->inspectorDOMStorageAgent())
60281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        domStorageAgent->clearResources();
60381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif
60481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDOMAgent* domAgent = instrumentingAgents->inspectorDOMAgent())
60581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        domAgent->setDocument(mainFrame->document());
6062bde8e466a4451c7319e3a072d118917957d6554Steve Block
6072bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (InspectorPageAgent* pageAgent = instrumentingAgents->inspectorPageAgent())
6082bde8e466a4451c7319e3a072d118917957d6554Steve Block        pageAgent->inspectedURLChanged(loader->url().string());
6092bde8e466a4451c7319e3a072d118917957d6554Steve Block
6102bde8e466a4451c7319e3a072d118917957d6554Steve Block    inspectorAgent->didCommitLoad();
61165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
61265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6132fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorInstrumentationCookie InspectorInstrumentation::willWriteHTMLImpl(InspectorAgent* inspectorAgent, unsigned int length, unsigned int startLine)
614a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
615a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    int timelineAgentId = 0;
6162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent);
617a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent) {
618a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->willWriteHTML(length, startLine);
619a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgentId = timelineAgent->id();
620a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    }
6212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return InspectorInstrumentationCookie(inspectorAgent, timelineAgentId);
622a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
623a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
624a94275402997c11dd2e778633dacf4b7e630a35dBen Murdochvoid InspectorInstrumentation::didWriteHTMLImpl(const InspectorInstrumentationCookie& cookie, unsigned int endLine)
625a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
626a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
627a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        timelineAgent->didWriteHTML(endLine);
628a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
629a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
6302fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::addMessageToConsoleImpl(InspectorAgent* inspectorAgent, MessageSource source, MessageType type, MessageLevel level, const String& message, PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack)
63165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->addMessageToConsole(source, type, level, message, arguments, callStack);
63365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
63465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6352fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::addMessageToConsoleImpl(InspectorAgent* inspectorAgent, MessageSource source, MessageType type, MessageLevel level, const String& message, unsigned lineNumber, const String& sourceID)
63665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->addMessageToConsole(source, type, level, message, lineNumber, sourceID);
63865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
63965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6402fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::consoleCountImpl(InspectorAgent* inspectorAgent, PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> stack)
64165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->count(arguments, stack);
64365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
64465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6452fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::startConsoleTimingImpl(InspectorAgent* inspectorAgent, const String& title)
64665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->startTiming(title);
64865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
64965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6502fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::stopConsoleTimingImpl(InspectorAgent* inspectorAgent, const String& title, PassRefPtr<ScriptCallStack> stack)
65165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->consoleAgent()->stopTiming(title, stack);
65365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
65465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
6552fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::consoleMarkTimelineImpl(InspectorAgent* inspectorAgent, PassRefPtr<ScriptArguments> arguments)
65665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent)) {
65865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        String message;
65965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        arguments->getFirstArgumentAsString(message);
66065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        timelineAgent->didMarkTimeline(message);
6612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block     }
66265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
66365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
66465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
6652fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::addStartProfilingMessageToConsoleImpl(InspectorAgent* inspectorAgent, const String& title, unsigned lineNumber, const String& sourceURL)
66665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
6672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorProfilerAgent* profilerAgent = inspectorAgent->profilerAgent())
66865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        profilerAgent->addStartProfilingMessageToConsole(title, lineNumber, sourceURL);
66965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
670ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
6712fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::addProfileImpl(InspectorAgent* inspectorAgent, RefPtr<ScriptProfile> profile, PassRefPtr<ScriptCallStack> callStack)
672ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
6732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorProfilerAgent* profilerAgent = inspectorAgent->profilerAgent()) {
674ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        const ScriptCallFrame& lastCaller = callStack->at(0);
675ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch        profilerAgent->addProfile(profile, lastCaller.lineNumber(), lastCaller.sourceURL());
676ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch    }
677ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
678ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
6792fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockString InspectorInstrumentation::getCurrentUserInitiatedProfileNameImpl(InspectorAgent* inspectorAgent, bool incrementProfileNumber)
680ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
6812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorProfilerAgent* profilerAgent = inspectorAgent->profilerAgent())
6822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block        return profilerAgent->getCurrentUserInitiatedProfileName(incrementProfileNumber);
6832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return "";
684ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
685ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch
6862fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool InspectorInstrumentation::profilerEnabledImpl(InspectorAgent* inspectorAgent)
687ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch{
6882bde8e466a4451c7319e3a072d118917957d6554Steve Block    return inspectorAgent->instrumentingAgents()->inspectorProfilerAgent()->enabled();
689ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch}
69065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
69165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
69265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(DATABASE)
6932fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didOpenDatabaseImpl(InspectorAgent* inspectorAgent, PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
69465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
69581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (!inspectorAgent->enabled())
69681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return;
69781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDatabaseAgent* dbAgent = inspectorAgent->instrumentingAgents()->inspectorDatabaseAgent())
69881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        dbAgent->didOpenDatabase(database, domain, name, version);
69965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
70065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
70165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
70265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(DOM_STORAGE)
7032fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didUseDOMStorageImpl(InspectorAgent* inspectorAgent, StorageArea* storageArea, bool isLocalStorage, Frame* frame)
70465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
70581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (!inspectorAgent->enabled())
70681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return;
70781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorDOMStorageAgent* domStorageAgent = inspectorAgent->instrumentingAgents()->inspectorDOMStorageAgent())
70881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        domStorageAgent->didUseDOMStorage(storageArea, isLocalStorage, frame);
70965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
71065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
71165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
71265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(WORKERS)
7132fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didCreateWorkerImpl(InspectorAgent* inspectorAgent, intptr_t id, const String& url, bool isSharedWorker)
71465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
7152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->didCreateWorker(id, url, isSharedWorker);
71665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
71765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7182fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didDestroyWorkerImpl(InspectorAgent* inspectorAgent, intptr_t id)
71965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
7202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    inspectorAgent->didDestroyWorker(id);
72165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
72265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
72365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
724e14391e94c850b8bd03680c23b38978db68687a8John Reck#if ENABLE(WEB_SOCKETS)
72581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid InspectorInstrumentation::didCreateWebSocketImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const KURL& requestURL, const KURL&)
726e14391e94c850b8bd03680c23b38978db68687a8John Reck{
72781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (!inspectorAgent->enabled())
72881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        return;
72981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
73081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        resourceAgent->didCreateWebSocket(identifier, requestURL);
731e14391e94c850b8bd03680c23b38978db68687a8John Reck}
732e14391e94c850b8bd03680c23b38978db68687a8John Reck
7332fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::willSendWebSocketHandshakeRequestImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const WebSocketHandshakeRequest& request)
734e14391e94c850b8bd03680c23b38978db68687a8John Reck{
73581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
73681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        resourceAgent->willSendWebSocketHandshakeRequest(identifier, request);
737e14391e94c850b8bd03680c23b38978db68687a8John Reck}
738e14391e94c850b8bd03680c23b38978db68687a8John Reck
7392fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didReceiveWebSocketHandshakeResponseImpl(InspectorAgent* inspectorAgent, unsigned long identifier, const WebSocketHandshakeResponse& response)
740e14391e94c850b8bd03680c23b38978db68687a8John Reck{
74181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
74281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        resourceAgent->didReceiveWebSocketHandshakeResponse(identifier, response);
743e14391e94c850b8bd03680c23b38978db68687a8John Reck}
744e14391e94c850b8bd03680c23b38978db68687a8John Reck
7452fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::didCloseWebSocketImpl(InspectorAgent* inspectorAgent, unsigned long identifier)
746e14391e94c850b8bd03680c23b38978db68687a8John Reck{
74781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorResourceAgent* resourceAgent = retrieveResourceAgent(inspectorAgent))
74881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        resourceAgent->didCloseWebSocket(identifier);
749e14391e94c850b8bd03680c23b38978db68687a8John Reck}
750e14391e94c850b8bd03680c23b38978db68687a8John Reck#endif
751e14391e94c850b8bd03680c23b38978db68687a8John Reck
75265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#if ENABLE(OFFLINE_WEB_APPLICATIONS)
7532fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::networkStateChangedImpl(InspectorAgent* inspectorAgent)
75465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
75581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorApplicationCacheAgent* applicationCacheAgent = inspectorAgent->instrumentingAgents()->inspectorApplicationCacheAgent())
75665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        applicationCacheAgent->networkStateChanged();
75765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
75865f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7592fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::updateApplicationCacheStatusImpl(InspectorAgent* inspectorAgent, Frame* frame)
76065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
76181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorApplicationCacheAgent* applicationCacheAgent = inspectorAgent->instrumentingAgents()->inspectorApplicationCacheAgent())
76265f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        applicationCacheAgent->updateApplicationCacheStatus(frame);
76365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
76465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#endif
76565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
7662fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool InspectorInstrumentation::hasFrontend(InspectorAgent* inspectorAgent)
767a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
7682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    return inspectorAgent->hasFrontend();
769a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
770a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
7712fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::pauseOnNativeEventIfNeeded(InspectorAgent* inspectorAgent, const String& categoryType, const String& eventName, bool synchronous)
772a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
773a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
77481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    if (InspectorBrowserDebuggerAgent* browserDebuggerAgent = inspectorAgent->instrumentingAgents()->inspectorBrowserDebuggerAgent())
77565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch        browserDebuggerAgent->pauseOnNativeEventIfNeeded(categoryType, eventName, synchronous);
776a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
777a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
778a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
7792fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorInstrumentation::cancelPauseOnNativeEvent(InspectorAgent* inspectorAgent)
780a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
781a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER)
7822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block    if (InspectorDebuggerAgent* debuggerAgent = inspectorAgent->debuggerAgent())
783a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        debuggerAgent->cancelPauseOnNextStatement();
784a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif
785a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
786a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
7872fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorTimelineAgent* InspectorInstrumentation::retrieveTimelineAgent(InspectorAgent* inspectorAgent)
788a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
78981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    return inspectorAgent->instrumentingAgents()->inspectorTimelineAgent();
790a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
791a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
792a94275402997c11dd2e778633dacf4b7e630a35dBen MurdochInspectorTimelineAgent* InspectorInstrumentation::retrieveTimelineAgent(const InspectorInstrumentationCookie& cookie)
793a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch{
7942bde8e466a4451c7319e3a072d118917957d6554Steve Block    if (!cookie.first)
7952bde8e466a4451c7319e3a072d118917957d6554Steve Block        return 0;
796a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie.first);
797a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    if (timelineAgent && timelineAgent->id() == cookie.second)
798a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch        return timelineAgent;
799a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch    return 0;
800a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch}
801a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
8022fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorResourceAgent* InspectorInstrumentation::retrieveResourceAgent(InspectorAgent* inspectorAgent)
80365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch{
80481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch    return inspectorAgent->instrumentingAgents()->inspectorResourceAgent();
80565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch}
80665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch
8072bde8e466a4451c7319e3a072d118917957d6554Steve BlockInspectorPageAgent* InspectorInstrumentation::retrievePageAgent(InspectorAgent* inspectorAgent)
8082bde8e466a4451c7319e3a072d118917957d6554Steve Block{
8092bde8e466a4451c7319e3a072d118917957d6554Steve Block    return inspectorAgent->instrumentingAgents()->inspectorPageAgent();
8102bde8e466a4451c7319e3a072d118917957d6554Steve Block}
8112bde8e466a4451c7319e3a072d118917957d6554Steve Block
812a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch} // namespace WebCore
813a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch
814a94275402997c11dd2e778633dacf4b7e630a35dBen Murdoch#endif // !ENABLE(INSPECTOR)
815