12fc2651226baac27029e38c9d6ef883fa32084dbSteve Block/* 22fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. 32fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com> 42bde8e466a4451c7319e3a072d118917957d6554Steve Block * Copyright (C) 2011 Google Inc. All rights reserved. 52fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 62fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * Redistribution and use in source and binary forms, with or without 72fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * modification, are permitted provided that the following conditions 82fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * are met: 92fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 1. Redistributions of source code must retain the above copyright 112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer. 122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 2. Redistributions in binary form must reproduce the above copyright 132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * notice, this list of conditions and the following disclaimer in the 142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * documentation and/or other materials provided with the distribution. 152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * its contributors may be used to endorse or promote products derived 172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * from this software without specific prior written permission. 182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * 192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block */ 302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "config.h" 322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorAgent.h" 332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(INSPECTOR) 352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "Document.h" 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "DocumentLoader.h" 382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "Frame.h" 392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "GraphicsContext.h" 402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InjectedScriptHost.h" 412bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "InjectedScriptManager.h" 422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorBrowserDebuggerAgent.h" 432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorCSSAgent.h" 442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorClient.h" 452fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorConsoleAgent.h" 462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorController.h" 472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorDOMAgent.h" 482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorFrontend.h" 492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorInstrumentation.h" 502bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "InspectorPageAgent.h" 512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorProfilerAgent.h" 522fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorResourceAgent.h" 532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorRuntimeAgent.h" 542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorState.h" 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorTimelineAgent.h" 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorValues.h" 572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorWorkerResource.h" 5881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "InstrumentingAgents.h" 592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "Page.h" 602bde8e466a4451c7319e3a072d118917957d6554Steve Block#include "PageDebuggerAgent.h" 612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "ResourceRequest.h" 622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "ScriptFunctionCall.h" 632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "ScriptObject.h" 642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "ScriptState.h" 652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "Settings.h" 662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(DATABASE) 682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorDatabaseAgent.h" 692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(DOM_STORAGE) 722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorDOMStorageAgent.h" 732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(OFFLINE_WEB_APPLICATIONS) 762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#include "InspectorApplicationCacheAgent.h" 772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 792fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockusing namespace std; 802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 812fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace WebCore { 822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 832fc2651226baac27029e38c9d6ef883fa32084dbSteve Blocknamespace InspectorAgentState { 842fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const char timelineProfilerEnabled[] = "timelineProfilerEnabled"; 852fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const char debuggerEnabled[] = "debuggerEnabled"; 862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 882fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const char scriptsPanelName[] = "scripts"; 892fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const char consolePanelName[] = "console"; 902fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockstatic const char profilesPanelName[] = "profiles"; 912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 922daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochnamespace { 932daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 942daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochclass PageRuntimeAgent : public InspectorRuntimeAgent { 952daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochpublic: 962daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch PageRuntimeAgent(InjectedScriptManager* injectedScriptManager, Page* page) 972daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch : InspectorRuntimeAgent(injectedScriptManager) 982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch , m_inspectedPage(page) { } 992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual ~PageRuntimeAgent() { } 1002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdochprivate: 1022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch virtual ScriptState* getDefaultInspectedState() { return mainWorldScriptState(m_inspectedPage->mainFrame()); } 1032daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch Page* m_inspectedPage; 1042daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch}; 1052daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1062daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch} 1072daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 1082bde8e466a4451c7319e3a072d118917957d6554Steve BlockInspectorAgent::InspectorAgent(Page* page, InspectorClient* client, InjectedScriptManager* injectedScriptManager) 1092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block : m_inspectedPage(page) 1102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_client(client) 1112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_frontend(0) 11281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_instrumentingAgents(new InstrumentingAgents()) 1132bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_injectedScriptManager(injectedScriptManager) 11481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_state(new InspectorState(client)) 1152bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_pageAgent(InspectorPageAgent::create(m_instrumentingAgents.get(), page, injectedScriptManager)) 1162bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_domAgent(InspectorDOMAgent::create(m_instrumentingAgents.get(), page, m_client, m_state.get(), injectedScriptManager)) 11781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_cssAgent(new InspectorCSSAgent(m_instrumentingAgents.get(), m_domAgent.get())) 11881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DATABASE) 1192daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch , m_databaseAgent(InspectorDatabaseAgent::create(m_instrumentingAgents.get(), m_state.get())) 12081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 12181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DOM_STORAGE) 12281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_domStorageAgent(InspectorDOMStorageAgent::create(m_instrumentingAgents.get())) 12381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 12481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_timelineAgent(InspectorTimelineAgent::create(m_instrumentingAgents.get(), m_state.get())) 12581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(OFFLINE_WEB_APPLICATIONS) 12681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_applicationCacheAgent(new InspectorApplicationCacheAgent(m_instrumentingAgents.get(), page)) 12781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 12881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_resourceAgent(InspectorResourceAgent::create(m_instrumentingAgents.get(), page, m_state.get())) 1292daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch , m_runtimeAgent(adoptPtr(new PageRuntimeAgent(m_injectedScriptManager, page))) 1302bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_consoleAgent(new InspectorConsoleAgent(m_instrumentingAgents.get(), this, m_state.get(), injectedScriptManager, m_domAgent.get())) 1312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 1322bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_debuggerAgent(PageDebuggerAgent::create(m_instrumentingAgents.get(), m_state.get(), page, injectedScriptManager)) 13381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_browserDebuggerAgent(InspectorBrowserDebuggerAgent::create(m_instrumentingAgents.get(), m_state.get(), m_domAgent.get(), m_debuggerAgent.get(), this)) 1342bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_profilerAgent(InspectorProfilerAgent::create(m_instrumentingAgents.get(), m_consoleAgent.get(), page, m_state.get())) 1352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 13681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch , m_canIssueEvaluateForTestInFrontend(false) 1372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT_ARG(page, page); 1392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT_ARG(client, client); 1402fc2651226baac27029e38c9d6ef883fa32084dbSteve Block InspectorInstrumentation::bindInspectorAgent(m_inspectedPage, this); 1412bde8e466a4451c7319e3a072d118917957d6554Steve Block m_instrumentingAgents->setInspectorAgent(this); 1422bde8e466a4451c7319e3a072d118917957d6554Steve Block 1432bde8e466a4451c7319e3a072d118917957d6554Steve Block m_injectedScriptManager->injectedScriptHost()->init(this 1442bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_consoleAgent.get() 1452bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(DATABASE) 1462bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_databaseAgent.get() 1472bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 1482bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(DOM_STORAGE) 1492bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_domStorageAgent.get() 1502bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 1512bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 1522bde8e466a4451c7319e3a072d118917957d6554Steve Block , m_debuggerAgent.get() 1532bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 1542bde8e466a4451c7319e3a072d118917957d6554Steve Block ); 1552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1572fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockInspectorAgent::~InspectorAgent() 1582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 1592bde8e466a4451c7319e3a072d118917957d6554Steve Block m_instrumentingAgents->setInspectorAgent(0); 1602bde8e466a4451c7319e3a072d118917957d6554Steve Block 1612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // These should have been cleared in inspectedPageDestroyed(). 1622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(!m_client); 1632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(!m_inspectedPage); 1642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1662fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::inspectedPageDestroyed() 1672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 16881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (m_frontend) { 16981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_frontend->inspector()->disconnectFromBackend(); 17081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch disconnectFrontend(); 17181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 1722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 1742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_browserDebuggerAgent.clear(); 17581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_debuggerAgent.clear(); 1762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 1772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block ASSERT(m_inspectedPage); 1792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block InspectorInstrumentation::unbindInspectorAgent(m_inspectedPage); 1802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inspectedPage = 0; 1812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1822bde8e466a4451c7319e3a072d118917957d6554Steve Block m_injectedScriptManager->disconnect(); 1832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_client->inspectorDestroyed(); 1852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_client = 0; 1862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 1872fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1882fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::restoreInspectorStateFromCookie(const String& inspectorStateCookie) 1892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 19081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_state->loadFromCookie(inspectorStateCookie); 1912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 19281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_frontend->inspector()->frontendReused(); 1932bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageAgent->restore(); 1942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1952bde8e466a4451c7319e3a072d118917957d6554Steve Block m_domAgent->restore(); 19681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_resourceAgent->restore(); 19781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_timelineAgent->restore(); 1982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 1992daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#if ENABLE(DATABASE) 2002daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch m_databaseAgent->restore(); 2012daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#endif 2022daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 2032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 20481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_debuggerAgent->restore(); 2052bde8e466a4451c7319e3a072d118917957d6554Steve Block m_profilerAgent->restore(); 2062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 2072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 2082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2092fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::didClearWindowObjectInWorld(Frame* frame, DOMWrapperWorld* world) 2102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 2112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (world != mainThreadNormalWorld()) 2122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 2132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_inspectorExtensionAPI.isEmpty()) 2152bde8e466a4451c7319e3a072d118917957d6554Steve Block m_injectedScriptManager->injectScript(m_inspectorExtensionAPI, mainWorldScriptState(frame)); 2162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 2172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2182fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::setFrontend(InspectorFrontend* inspectorFrontend) 2192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 22081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // We can reconnect to existing front-end -> unmute state. 22181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_state->unmute(); 22281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_frontend = inspectorFrontend; 2242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 22581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(OFFLINE_WEB_APPLICATIONS) 22681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_applicationCacheAgent->setFrontend(m_frontend); 22781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 2282bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageAgent->setFrontend(m_frontend); 22981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_domAgent->setFrontend(m_frontend); 2302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_consoleAgent->setFrontend(m_frontend); 23181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_timelineAgent->setFrontend(m_frontend); 23281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_resourceAgent->setFrontend(m_frontend); 23381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(JAVASCRIPT_DEBUGGER) 23481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_debuggerAgent->setFrontend(m_frontend); 2352bde8e466a4451c7319e3a072d118917957d6554Steve Block m_profilerAgent->setFrontend(m_frontend); 23681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 23781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DATABASE) 23881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_databaseAgent->setFrontend(m_frontend); 23981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 24081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DOM_STORAGE) 24181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_domStorageAgent->setFrontend(m_frontend); 24281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 2432bde8e466a4451c7319e3a072d118917957d6554Steve Block 2442bde8e466a4451c7319e3a072d118917957d6554Steve Block if (!m_showPanelAfterVisible.isEmpty()) { 2452bde8e466a4451c7319e3a072d118917957d6554Steve Block m_frontend->inspector()->showPanel(m_showPanelAfterVisible); 2462bde8e466a4451c7319e3a072d118917957d6554Steve Block m_showPanelAfterVisible = String(); 2472bde8e466a4451c7319e3a072d118917957d6554Steve Block } 2482bde8e466a4451c7319e3a072d118917957d6554Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) && ENABLE(WORKERS) 2492bde8e466a4451c7319e3a072d118917957d6554Steve Block WorkersMap::iterator workersEnd = m_workers.end(); 2502bde8e466a4451c7319e3a072d118917957d6554Steve Block for (WorkersMap::iterator it = m_workers.begin(); it != workersEnd; ++it) { 2512bde8e466a4451c7319e3a072d118917957d6554Steve Block InspectorWorkerResource* worker = it->second.get(); 2522bde8e466a4451c7319e3a072d118917957d6554Steve Block m_frontend->inspector()->didCreateWorker(worker->id(), worker->url(), worker->isSharedWorker()); 2532bde8e466a4451c7319e3a072d118917957d6554Steve Block } 2542bde8e466a4451c7319e3a072d118917957d6554Steve Block#endif 2552bde8e466a4451c7319e3a072d118917957d6554Steve Block // Dispatch pending frontend commands 2562bde8e466a4451c7319e3a072d118917957d6554Steve Block issueEvaluateForTestCommands(); 2572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 2582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2592fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::disconnectFrontend() 2602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 2612fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_frontend) 2622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 2632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 26481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_canIssueEvaluateForTestInFrontend = false; 26581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_pendingEvaluateTestCommands.clear(); 26681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 2672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // Destroying agents would change the state, but we don't want that. 2682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block // Pre-disconnect state will be used to restore inspector agents. 2692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_state->mute(); 2702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_frontend = 0; 2722fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 27481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_debuggerAgent->clearFrontend(); 27581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_browserDebuggerAgent->clearFrontend(); 27681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_profilerAgent->clearFrontend(); 2772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 2782bde8e466a4451c7319e3a072d118917957d6554Steve Block 27981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(OFFLINE_WEB_APPLICATIONS) 28081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_applicationCacheAgent->clearFrontend(); 28181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 2822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 28381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_consoleAgent->clearFrontend(); 28481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_domAgent->clearFrontend(); 28581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_timelineAgent->clearFrontend(); 28681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_resourceAgent->clearFrontend(); 28781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DATABASE) 28881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_databaseAgent->clearFrontend(); 28981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 29081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#if ENABLE(DOM_STORAGE) 29181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_domStorageAgent->clearFrontend(); 29281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 2932bde8e466a4451c7319e3a072d118917957d6554Steve Block m_pageAgent->clearFrontend(); 2942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 2952fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 2962bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid InspectorAgent::didCommitLoad() 2972fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 2982bde8e466a4451c7319e3a072d118917957d6554Steve Block if (m_frontend) 29981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_frontend->inspector()->reset(); 3002bde8e466a4451c7319e3a072d118917957d6554Steve Block 3012bde8e466a4451c7319e3a072d118917957d6554Steve Block m_injectedScriptManager->discardInjectedScripts(); 3022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WORKERS) 30381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_workers.clear(); 3042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 3052fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3072bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid InspectorAgent::domContentLoadedEventFired() 3082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3092bde8e466a4451c7319e3a072d118917957d6554Steve Block m_injectedScriptManager->injectedScriptHost()->clearInspectedNodes(); 3102fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3122fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool InspectorAgent::isMainResourceLoader(DocumentLoader* loader, const KURL& requestUrl) 3132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return loader->frame() == m_inspectedPage->mainFrame() && requestUrl == loader->requestURL(); 3152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3172fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(WORKERS) 3182fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockclass PostWorkerNotificationToFrontendTask : public ScriptExecutionContext::Task { 3192fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockpublic: 3202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block static PassOwnPtr<PostWorkerNotificationToFrontendTask> create(PassRefPtr<InspectorWorkerResource> worker, InspectorAgent::WorkerAction action) 3212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 3222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return new PostWorkerNotificationToFrontendTask(worker, action); 3232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 3242fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3252fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockprivate: 3262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block PostWorkerNotificationToFrontendTask(PassRefPtr<InspectorWorkerResource> worker, InspectorAgent::WorkerAction action) 3272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block : m_worker(worker) 3282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block , m_action(action) 3292fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 3302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 3312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3322fc2651226baac27029e38c9d6ef883fa32084dbSteve Block virtual void performTask(ScriptExecutionContext* scriptContext) 3332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block { 3342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (scriptContext->isDocument()) { 3352fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (InspectorAgent* inspectorAgent = static_cast<Document*>(scriptContext)->page()->inspectorController()->m_inspectorAgent.get()) 3362fc2651226baac27029e38c9d6ef883fa32084dbSteve Block inspectorAgent->postWorkerNotificationToFrontend(*m_worker, m_action); 3372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 3382fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 3392fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3402fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockprivate: 3412fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<InspectorWorkerResource> m_worker; 3422fc2651226baac27029e38c9d6ef883fa32084dbSteve Block InspectorAgent::WorkerAction m_action; 3432fc2651226baac27029e38c9d6ef883fa32084dbSteve Block}; 3442fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3452fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::postWorkerNotificationToFrontend(const InspectorWorkerResource& worker, InspectorAgent::WorkerAction action) 3462fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_frontend) 3482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 3492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 3502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block switch (action) { 3512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case InspectorAgent::WorkerCreated: 3522bde8e466a4451c7319e3a072d118917957d6554Steve Block m_frontend->inspector()->didCreateWorker(worker.id(), worker.url(), worker.isSharedWorker()); 3532fc2651226baac27029e38c9d6ef883fa32084dbSteve Block break; 3542fc2651226baac27029e38c9d6ef883fa32084dbSteve Block case InspectorAgent::WorkerDestroyed: 3552bde8e466a4451c7319e3a072d118917957d6554Steve Block m_frontend->inspector()->didDestroyWorker(worker.id()); 3562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block break; 3572fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 3582fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 3592fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3602fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3612fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::didCreateWorker(intptr_t id, const String& url, bool isSharedWorker) 3622fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3632fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!enabled()) 3642fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 3652fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3662fc2651226baac27029e38c9d6ef883fa32084dbSteve Block RefPtr<InspectorWorkerResource> workerResource(InspectorWorkerResource::create(id, url, isSharedWorker)); 3672fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_workers.set(id, workerResource); 3682fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_inspectedPage && m_frontend) 3692fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inspectedPage->mainFrame()->document()->postTask(PostWorkerNotificationToFrontendTask::create(workerResource, InspectorAgent::WorkerCreated)); 3702fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3712fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3722fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::didDestroyWorker(intptr_t id) 3732fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3742fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!enabled()) 3752fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 3762fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3772fc2651226baac27029e38c9d6ef883fa32084dbSteve Block WorkersMap::iterator workerResource = m_workers.find(id); 3782fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (workerResource == m_workers.end()) 3792fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 3802fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (m_inspectedPage && m_frontend) 3812fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inspectedPage->mainFrame()->document()->postTask(PostWorkerNotificationToFrontendTask::create(workerResource->second, InspectorAgent::WorkerDestroyed)); 3822fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_workers.remove(workerResource); 3832fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3842fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // ENABLE(WORKERS) 3852fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3862fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 3872bde8e466a4451c7319e3a072d118917957d6554Steve Blockvoid InspectorAgent::showProfilesPanel() 3882fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 3892fc2651226baac27029e38c9d6ef883fa32084dbSteve Block showPanel(profilesPanelName); 3902fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3912fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif 3922fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 3932fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::evaluateForTestInFrontend(long callId, const String& script) 3942fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 39581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_pendingEvaluateTestCommands.append(pair<long, String>(callId, script)); 39681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (m_canIssueEvaluateForTestInFrontend) 39781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch issueEvaluateForTestCommands(); 3982fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 3992fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4002fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::setInspectorExtensionAPI(const String& source) 4012fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4022fc2651226baac27029e38c9d6ef883fa32084dbSteve Block m_inspectorExtensionAPI = source; 4032fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4042fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4052fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockKURL InspectorAgent::inspectedURL() const 4062fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4072fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return m_inspectedPage->mainFrame()->document()->url(); 4082fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4092fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4102fc2651226baac27029e38c9d6ef883fa32084dbSteve BlockKURL InspectorAgent::inspectedURLWithoutFragment() const 4112fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4122fc2651226baac27029e38c9d6ef883fa32084dbSteve Block KURL url = inspectedURL(); 4132fc2651226baac27029e38c9d6ef883fa32084dbSteve Block url.removeFragmentIdentifier(); 4142fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return url; 4152fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4162fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4172fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockbool InspectorAgent::enabled() const 4182fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4192fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_inspectedPage) 4202fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return false; 4212fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return m_inspectedPage->settings()->developerExtrasEnabled(); 4222fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4232fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4242fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::showConsole() 4252fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4262fc2651226baac27029e38c9d6ef883fa32084dbSteve Block showPanel(consolePanelName); 4272fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4282fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4292fc2651226baac27029e38c9d6ef883fa32084dbSteve Blockvoid InspectorAgent::showPanel(const String& panel) 4302fc2651226baac27029e38c9d6ef883fa32084dbSteve Block{ 4312fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (!m_frontend) { 43281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_showPanelAfterVisible = panel; 4332fc2651226baac27029e38c9d6ef883fa32084dbSteve Block return; 4342fc2651226baac27029e38c9d6ef883fa32084dbSteve Block } 43581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_frontend->inspector()->showPanel(panel); 43681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch} 43781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 43881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdochvoid InspectorAgent::issueEvaluateForTestCommands() 43981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch{ 44081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch if (m_frontend) { 44181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch Vector<pair<long, String> > copy = m_pendingEvaluateTestCommands; 44281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_pendingEvaluateTestCommands.clear(); 44381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch for (Vector<pair<long, String> >::iterator it = copy.begin(); m_frontend && it != copy.end(); ++it) 44481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_frontend->inspector()->evaluateForTestInFrontend((*it).first, (*it).second); 44581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch m_canIssueEvaluateForTestInFrontend = true; 44681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch } 4472fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} 4482fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4492fc2651226baac27029e38c9d6ef883fa32084dbSteve Block} // namespace WebCore 4502fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 4512fc2651226baac27029e38c9d6ef883fa32084dbSteve Block#endif // ENABLE(INSPECTOR) 452