15f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian/* 25f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2009 Apple Inc. All rights reserved. 35f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2009 Google Inc. All rights reserved. 45f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 55f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Redistribution and use in source and binary forms, with or without 65f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * modification, are permitted provided that the following conditions 75f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * are met: 85f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 95f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 1. Redistributions of source code must retain the above copyright 105f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * notice, this list of conditions and the following disclaimer. 115f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 2. Redistributions in binary form must reproduce the above copyright 125f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * notice, this list of conditions and the following disclaimer in the 135f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * documentation and/or other materials provided with the distribution. 145f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 155f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * its contributors may be used to endorse or promote products derived 165f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * from this software without specific prior written permission. 175f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * 185f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 195f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 205f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 215f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 225f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 235f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 245f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 255f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 265f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 275f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian */ 295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 305f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#ifndef InspectorFrontend_h 315f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#define InspectorFrontend_h 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ScriptArray.h" 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include "ScriptObject.h" 355f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include "ScriptState.h" 365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#include <wtf/PassOwnPtr.h> 375f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 385e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) && USE(JSC) 395f1ab04193ad0130ca8204aadaceae083aca9881Feng Qiannamespace JSC { 405f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class JSValue; 415f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class SourceCode; 425f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class UString; 435f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 445f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 455f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 465f1ab04193ad0130ca8204aadaceae083aca9881Feng Qiannamespace WebCore { 475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class ConsoleMessage; 48231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class Database; 49231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class Frame; 50231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class InspectorController; 515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class InspectorResource; 525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class Node; 535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian class ScriptString; 548a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block class SerializedScriptValue; 55231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block class Storage; 565f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 57d0825bca7fe65beaee391d30da42e937db621564Steve Block class InspectorFrontend : public Noncopyable { 585f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian public: 598a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block InspectorFrontend(InspectorController* inspectorController, ScriptObject webInspector); 605f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ~InspectorFrontend(); 615f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ScriptArray newScriptArray(); 630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch ScriptObject newScriptObject(); 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didCommitLoad(); 66d0825bca7fe65beaee391d30da42e937db621564Steve Block 67d0825bca7fe65beaee391d30da42e937db621564Steve Block void populateFrontendSettings(const String& settings); 68d0825bca7fe65beaee391d30da42e937db621564Steve Block 69d0825bca7fe65beaee391d30da42e937db621564Steve Block void updateConsoleMessageExpiredCount(unsigned count); 70d0825bca7fe65beaee391d30da42e937db621564Steve Block void addConsoleMessage(const ScriptObject& messageObj, const Vector<ScriptString>& frames, ScriptState*, const Vector<ScriptValue> arguments, const String& message); 71d0825bca7fe65beaee391d30da42e937db621564Steve Block void updateConsoleMessageRepeatCount(unsigned count); 72231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void clearConsoleMessages(); 73231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool updateResource(unsigned long identifier, const ScriptObject& resourceObj); 75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void removeResource(unsigned long identifier); 76d0825bca7fe65beaee391d30da42e937db621564Steve Block void didGetResourceContent(int callId, const String& content); 775f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void updateFocusedNode(long nodeId); 795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void setAttachedWindow(bool attached); 805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void showPanel(int panel); 815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void populateInterface(); 825f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void reset(); 835f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 845f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void resourceTrackingWasEnabled(); 855f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void resourceTrackingWasDisabled(); 865f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 875e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#if ENABLE(JAVASCRIPT_DEBUGGER) && USE(JSC) 885f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void attachDebuggerWhenShown(); 895f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void debuggerWasEnabled(); 905f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void debuggerWasDisabled(); 915f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void parsedScriptSource(const JSC::SourceCode&); 925f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void failedToParseScriptSource(const JSC::SourceCode&, int errorLine, const JSC::UString& errorMessage); 938a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void pausedScript(SerializedScriptValue* callFrames); 948a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void resumedScript(); 958a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#endif 968a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block#if ENABLE(JAVASCRIPT_DEBUGGER) 978a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void profilerWasEnabled(); 988a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void profilerWasDisabled(); 99cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void addProfileHeader(const ScriptValue& profile); 1005f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void setRecordingProfile(bool isProfiling); 101cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didGetProfileHeaders(int callId, const ScriptArray& headers); 102cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didGetProfile(int callId, const ScriptValue& profile); 1035f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 1045f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1055f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(DATABASE) 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool addDatabase(const ScriptObject& dbObj); 107231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void selectDatabase(int databaseId); 108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didGetDatabaseTableNames(int callId, const ScriptArray& tableNames); 1095f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 1105f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1115f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(DOM_STORAGE) 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch bool addDOMStorage(const ScriptObject& domStorageObj); 113231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void selectDOMStorage(int storageId); 114231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didGetDOMStorageEntries(int callId, const ScriptArray& entries); 115231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didSetDOMStorageItem(int callId, bool success); 116231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didRemoveDOMStorageItem(int callId, bool success); 117231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void updateDOMStorage(int storageId); 1185f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 1195f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 120231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void setDocument(const ScriptObject& root); 121231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void setDetachedRoot(const ScriptObject& root); 1220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void setChildNodes(int parentId, const ScriptArray& nodes); 123231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void childNodeCountUpdated(int id, int newValue); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void childNodeInserted(int parentId, int prevId, const ScriptObject& node); 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void childNodeRemoved(int parentId, int id); 1260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void attributesUpdated(int id, const ScriptArray& attributes); 1270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void didGetChildNodes(int callId); 1280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch void didApplyDomChange(int callId, bool success); 129231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didGetEventListenersForNode(int callId, int nodeId, ScriptArray& listenersArray); 130cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void didRemoveNode(int callId, int nodeId); 131231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 132cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void timelineProfilerWasStarted(); 133cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void timelineProfilerWasStopped(); 134cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block void addRecordToTimeline(const ScriptObject&); 135231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 136231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void didGetCookies(int callId, const ScriptArray& cookies, const String& cookiesString); 1378a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block void didDispatchOnInjectedScript(int callId, SerializedScriptValue* result, bool isException); 138231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 139231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void addNodesToSearchResult(const String& nodeIds); 140231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void contextMenuItemSelected(int itemId); 142643ca7872b450ea4efacab6188849e5aac2ba161Steve Block void contextMenuCleared(); 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1448a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block ScriptState* scriptState() const { return m_webInspector.scriptState(); } 1450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 146231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block void evaluateForTestInFrontend(int callId, const String& script); 1475f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian private: 1485f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian void callSimpleFunction(const String& functionName); 149231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block InspectorController* m_inspectorController; 1505f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian ScriptObject m_webInspector; 1515f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian }; 1525f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1535f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} // namespace WebCore 1545f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian 1555f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif // !defined(InspectorFrontend_h) 156