diff options
Diffstat (limited to 'Source/WebCore/inspector/InspectorController.h')
-rw-r--r-- | Source/WebCore/inspector/InspectorController.h | 368 |
1 files changed, 59 insertions, 309 deletions
diff --git a/Source/WebCore/inspector/InspectorController.h b/Source/WebCore/inspector/InspectorController.h index 90a0300..7db024c 100644 --- a/Source/WebCore/inspector/InspectorController.h +++ b/Source/WebCore/inspector/InspectorController.h @@ -1,365 +1,115 @@ /* - * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved. + * Copyright (C) 2011 Google Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: + * modification, are permitted provided that the following conditions are + * met: * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef InspectorController_h #define InspectorController_h -#include "CharacterData.h" -#include "Console.h" -#include "Cookie.h" -#include "Page.h" #include "PlatformString.h" -#include <wtf/HashMap.h> -#include <wtf/HashSet.h> -#include <wtf/ListHashSet.h> -#include <wtf/RefCounted.h> +#include <wtf/Forward.h> +#include <wtf/Noncopyable.h> #include <wtf/Vector.h> -#include <wtf/text/StringHash.h> namespace WebCore { -class CachedResource; -class CharacterData; -class Database; class DOMWrapperWorld; -class Document; -class DocumentLoader; -class FloatRect; +class Frame; class GraphicsContext; -class HTTPHeaderMap; -class HitTestResult; -class InjectedScript; -class InjectedScriptHost; -class InspectorArray; +class InspectorAgent; class InspectorBackendDispatcher; -class InspectorBrowserDebuggerAgent; class InspectorClient; -class InspectorConsoleAgent; -class InspectorCSSAgent; -class InspectorDOMAgent; -class InspectorDOMStorageAgent; -class InspectorDOMStorageResource; -class InspectorDatabaseAgent; -class InspectorDatabaseResource; -class InspectorDebuggerAgent; class InspectorFrontend; class InspectorFrontendClient; -class InspectorObject; -class InspectorProfilerAgent; -class InspectorResourceAgent; -class InspectorRuntimeAgent; -class InspectorSettings; -class InspectorState; -class InspectorStorageAgent; -class InspectorTimelineAgent; -class InspectorValue; -class InspectorWorkerResource; -class IntRect; -class KURL; -class Node; class Page; -class ResourceRequest; -class ResourceResponse; -class ResourceError; -class ScriptArguments; -class ScriptCallStack; -class ScriptProfile; -class SharedBuffer; -class StorageArea; - -#if ENABLE(OFFLINE_WEB_APPLICATIONS) -class InspectorApplicationCacheAgent; -#endif - -#if ENABLE(FILE_SYSTEM) -class InspectorFileSystemAgent; -#endif - -#if ENABLE(WEB_SOCKETS) -class WebSocketHandshakeRequest; -class WebSocketHandshakeResponse; -#endif +class PostWorkerNotificationToFrontendTask; +class Node; class InspectorController { - WTF_MAKE_NONCOPYABLE(InspectorController); WTF_MAKE_FAST_ALLOCATED; + WTF_MAKE_NONCOPYABLE(InspectorController); + WTF_MAKE_FAST_ALLOCATED; public: - static const char* const ConsolePanel; - static const char* const ElementsPanel; - static const char* const ProfilesPanel; - static const char* const ScriptsPanel; - InspectorController(Page*, InspectorClient*); ~InspectorController(); - InspectorBackendDispatcher* inspectorBackendDispatcher() { return m_inspectorBackendDispatcher.get(); } - InspectorClient* inspectorClient() { return m_client; } - InjectedScriptHost* injectedScriptHost() { return m_injectedScriptHost.get(); } - - void inspectedPageDestroyed(); - bool enabled() const; - - Page* inspectedPage() const { return m_inspectedPage; } - KURL inspectedURL() const; - void reloadPage(); - - void restoreInspectorStateFromCookie(const String& inspectorCookie); - - void inspect(Node*); - void highlight(Node*); - void hideHighlight(); - void highlightDOMNode(long nodeId); - void hideDOMNodeHighlight() { hideHighlight(); } - - void highlightFrame(unsigned long frameId); - void hideFrameHighlight() { hideHighlight(); } + Page* inspectedPage() const; void show(); - void showPanel(const String&); void close(); - void connectFrontend(); - void reuseFrontend(); - void disconnectFrontend(); - InspectorFrontend* frontend() const { return m_frontend.get(); } - - InspectorResourceAgent* resourceAgent(); - - InspectorController* inspectorAgent() { return this; } - InspectorConsoleAgent* consoleAgent() { return m_consoleAgent.get(); } - InspectorCSSAgent* cssAgent() { return m_cssAgent.get(); } - InspectorDOMAgent* domAgent() { return m_domAgent.get(); } - InjectedScriptHost* injectedScriptAgent() { return m_injectedScriptHost.get(); } - InspectorRuntimeAgent* runtimeAgent() { return m_runtimeAgent.get(); } - InspectorTimelineAgent* timelineAgent() { return m_timelineAgent.get(); } -#if ENABLE(DATABASE) - InspectorDatabaseAgent* databaseAgent() { return m_databaseAgent.get(); } -#endif -#if ENABLE(DOM_STORAGE) - InspectorDOMStorageAgent* domStorageAgent() { return m_domStorageAgent.get(); } -#endif -#if ENABLE(FILE_SYSTEM) - InspectorFileSystemAgent* fileSystemAgent() { return m_fileSystemAgent.get(); } -#endif -#if ENABLE(JAVASCRIPT_DEBUGGER) - InspectorBrowserDebuggerAgent* browserDebuggerAgent() const { return m_browserDebuggerAgent.get(); } - InspectorDebuggerAgent* debuggerAgent() const { return m_debuggerAgent.get(); } - InspectorProfilerAgent* profilerAgent() const { return m_profilerAgent.get(); } -#endif -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - InspectorApplicationCacheAgent* applicationCacheAgent() { return m_applicationCacheAgent.get(); } -#endif - - - bool searchingForNodeInPage() const; - void mouseDidMoveOverElement(const HitTestResult&, unsigned modifierFlags); - bool handleMousePress(); + void setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient>); + bool hasInspectorFrontendClient() const; + void didClearWindowObjectInWorld(Frame*, DOMWrapperWorld*); + void setInspectorExtensionAPI(const String& source); - void setInspectorFrontendClient(PassOwnPtr<InspectorFrontendClient> client); - bool hasInspectorFrontendClient() const { return m_inspectorFrontendClient; } + void dispatchMessageFromFrontend(const String& message); - void didClearWindowObjectInWorld(Frame*, DOMWrapperWorld*); + bool hasFrontend() const { return m_inspectorFrontend; } + void connectFrontend(); + void disconnectFrontend(); + void restoreInspectorStateFromCookie(const String& inspectorCookie); - void didCommitLoad(DocumentLoader*); + void showConsole(); + void inspect(Node*); + void drawNodeHighlight(GraphicsContext&) const; + void hideHighlight(); - void setExtraHeaders(PassRefPtr<InspectorObject>); + void evaluateForTestInFrontend(long callId, const String& script); void startTimelineProfiler(); void stopTimelineProfiler(); - - void getCookies(RefPtr<InspectorArray>* cookies, WTF::String* cookiesString); - void deleteCookie(const String& cookieName, const String& domain); - - void mainResourceFiredLoadEvent(DocumentLoader*, const KURL&); - void mainResourceFiredDOMContentEvent(DocumentLoader*, const KURL&); - -#if ENABLE(WORKERS) - enum WorkerAction { WorkerCreated, WorkerDestroyed }; - - void postWorkerNotificationToFrontend(const InspectorWorkerResource&, WorkerAction); - void didCreateWorker(intptr_t, const String& url, bool isSharedWorker); - void didDestroyWorker(intptr_t); -#endif - -#if ENABLE(DATABASE) - void didOpenDatabase(PassRefPtr<Database>, const String& domain, const String& name, const String& version); -#endif - -#if ENABLE(DOM_STORAGE) - void didUseDOMStorage(StorageArea* storageArea, bool isLocalStorage, Frame* frame); -#endif - -#if ENABLE(WEB_SOCKETS) - void didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL); - void willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&); - void didReceiveWebSocketHandshakeResponse(unsigned long identifier, const WebSocketHandshakeResponse&); - void didCloseWebSocket(unsigned long identifier); -#endif - - bool hasFrontend() const { return m_frontend; } - - void drawNodeHighlight(GraphicsContext&) const; - void openInInspectedWindow(const String& url); - void drawElementTitle(GraphicsContext&, const IntRect& boundingBox, const FloatRect& overlayRect, WebCore::Settings*) const; + bool timelineProfilerEnabled(); #if ENABLE(JAVASCRIPT_DEBUGGER) - bool isRecordingUserInitiatedProfile() const; - void startProfiling() { startUserInitiatedProfiling(); } + bool profilerEnabled(); + void enableProfiler(); void startUserInitiatedProfiling(); - void stopProfiling() { stopUserInitiatedProfiling(); } + bool isRecordingUserInitiatedProfile() const; void stopUserInitiatedProfiling(); - void enableProfiler(bool always = false, bool skipRecompile = false); - void disableProfiler(bool always = false); - bool profilerEnabled() const; - + void disableProfiler(); void showAndEnableDebugger(); - void enableDebugger(bool always); - void disableDebugger(bool always = false); - bool debuggerEnabled() const { return m_debuggerAgent; } + bool debuggerEnabled(); + void disableDebugger(); void resume(); - - void setAllBrowserBreakpoints(PassRefPtr<InspectorObject>); #endif - // Generic code called from custom implementations. - void evaluateForTestInFrontend(long testCallId, const String& script); - - void addScriptToEvaluateOnLoad(const String& source); - void removeAllScriptsToEvaluateOnLoad(); - void setInspectorExtensionAPI(const String& source); - - bool inspectorStartsAttached(); - void setInspectorStartsAttached(bool); - void setInspectorAttachedHeight(long height); - long inspectorAttachedHeight() const; - - InspectorState* state() { return m_state.get(); } - InspectorSettings* settings() { return m_settings.get(); } - - // InspectorAgent API - void getInspectorState(RefPtr<InspectorObject>* state); - void setMonitoringXHREnabled(bool enabled, bool* newState); - void populateScriptObjects(); - // Following are used from InspectorBackend and internally. - void setSearchingForNode(bool enabled, bool* newState); - void didEvaluateForTestInFrontend(long callId, const String& jsonResult); - - // InspectorInstrumentation API - void ensureSettingsLoaded(); - void willSendRequest(ResourceRequest&); - private: - void pushDataCollectedOffline(); - void restoreDebugger(); - enum ProfilerRestoreAction { - ProfilerRestoreNoAction = 0, - ProfilerRestoreResetAgent = 1 - }; - void restoreProfiler(ProfilerRestoreAction action); - void unbindAllResources(); - void setSearchingForNode(bool enabled); - - void releaseFrontendLifetimeAgents(); - -#if ENABLE(JAVASCRIPT_DEBUGGER) - void toggleRecordButton(bool); -#endif - - PassRefPtr<InspectorObject> buildObjectForCookie(const Cookie&); - PassRefPtr<InspectorArray> buildArrayForCookies(ListHashSet<Cookie>&); - - void focusNode(); - bool isMainResourceLoader(DocumentLoader* loader, const KURL& requestUrl); + friend class PostWorkerNotificationToFrontendTask; - Page* m_inspectedPage; - InspectorClient* m_client; + OwnPtr<InspectorAgent> m_inspectorAgent; + OwnPtr<InspectorBackendDispatcher> m_inspectorBackendDispatcher; OwnPtr<InspectorFrontendClient> m_inspectorFrontendClient; + OwnPtr<InspectorFrontend> m_inspectorFrontend; + InspectorClient* m_inspectorClient; bool m_openingFrontend; - OwnPtr<InspectorFrontend> m_frontend; - OwnPtr<InspectorCSSAgent> m_cssAgent; - RefPtr<InspectorDOMAgent> m_domAgent; - -#if ENABLE(DATABASE) - RefPtr<InspectorDatabaseAgent> m_databaseAgent; -#endif - -#if ENABLE(DOM_STORAGE) - RefPtr<InspectorDOMStorageAgent> m_domStorageAgent; -#endif - - OwnPtr<InspectorTimelineAgent> m_timelineAgent; - OwnPtr<InspectorState> m_state; - OwnPtr<InspectorSettings> m_settings; - -#if ENABLE(OFFLINE_WEB_APPLICATIONS) - OwnPtr<InspectorApplicationCacheAgent> m_applicationCacheAgent; -#endif - -#if ENABLE(FILE_SYSTEM) - RefPtr<InspectorFileSystemAgent> m_fileSystemAgent; -#endif - - RefPtr<Node> m_nodeToFocus; - RefPtr<InspectorResourceAgent> m_resourceAgent; - OwnPtr<InspectorRuntimeAgent> m_runtimeAgent; - -#if ENABLE(DATABASE) - typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap; - DatabaseResourcesMap m_databaseResources; -#endif -#if ENABLE(DOM_STORAGE) - typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap; - DOMStorageResourcesMap m_domStorageResources; -#endif - - String m_showAfterVisible; - RefPtr<Node> m_highlightedNode; - OwnPtr<InspectorBackendDispatcher> m_inspectorBackendDispatcher; - RefPtr<InjectedScriptHost> m_injectedScriptHost; - OwnPtr<InspectorConsoleAgent> m_consoleAgent; - - Vector<pair<long, String> > m_pendingEvaluateTestCommands; - Vector<String> m_scriptsToEvaluateOnLoad; - String m_inspectorExtensionAPI; -#if ENABLE(JAVASCRIPT_DEBUGGER) - bool m_attachDebuggerWhenShown; - OwnPtr<InspectorDebuggerAgent> m_debuggerAgent; - OwnPtr<InspectorBrowserDebuggerAgent> m_browserDebuggerAgent; - OwnPtr<InspectorProfilerAgent> m_profilerAgent; -#endif - OwnPtr<HTTPHeaderMap> m_extraHeaders; -#if ENABLE(WORKERS) - typedef HashMap<intptr_t, RefPtr<InspectorWorkerResource> > WorkersMap; - - WorkersMap m_workers; -#endif }; -} // namespace WebCore +} #endif // !defined(InspectorController_h) |