15e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block/*
25e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * Copyright (C) 2010 Google Inc. All rights reserved.
35e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *
45e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * Redistribution and use in source and binary forms, with or without
55e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * modification, are permitted provided that the following conditions are
65e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * met:
75e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *
85e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *     * Redistributions of source code must retain the above copyright
95e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * notice, this list of conditions and the following disclaimer.
105e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *     * Redistributions in binary form must reproduce the above
115e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * copyright notice, this list of conditions and the following disclaimer
125e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * in the documentation and/or other materials provided with the
135e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * distribution.
145e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *     * Neither the name of Google Inc. nor the names of its
155e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * contributors may be used to endorse or promote products derived from
165e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * this software without specific prior written permission.
175e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block *
185e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
205e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
215e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
225e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
235e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
245e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
255e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
265e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
285e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block */
305e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
315e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#ifndef WebDevToolsAgentImpl_h
325e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#define WebDevToolsAgentImpl_h
335e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
3406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen#include "InspectorClient.h"
3506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen
365e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#include "WebDevToolsAgentPrivate.h"
375e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
38dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch#include <wtf/Forward.h>
395e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#include <wtf/OwnPtr.h>
405e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
415e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blocknamespace WebCore {
425e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass Document;
4365f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdochclass Frame;
4406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsenclass InspectorClient;
455e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass InspectorController;
465e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass Node;
475e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block}
485e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
495e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blocknamespace WebKit {
505e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
515e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass DebuggerAgentImpl;
525e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebDevToolsAgentClient;
535e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebFrame;
545e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebFrameImpl;
555e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebString;
565e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebURLRequest;
575e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebURLResponse;
585e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebViewImpl;
595e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockstruct WebURLError;
605e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockstruct WebDevToolsMessageData;
615e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
625e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockclass WebDevToolsAgentImpl : public WebDevToolsAgentPrivate,
6306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen                             public WebCore::InspectorClient {
645e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockpublic:
655e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    WebDevToolsAgentImpl(WebViewImpl* webViewImpl, WebDevToolsAgentClient* client);
665e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual ~WebDevToolsAgentImpl();
675e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
685e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    // WebDevToolsAgentPrivate implementation.
695e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void didClearWindowObject(WebFrameImpl* frame);
705e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
715e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    // WebDevToolsAgent implementation.
725e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void attach();
735e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void detach();
74dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual void frontendLoaded();
755e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void didNavigate();
76dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual void dispatchOnInspectorBackend(const WebString& message);
775e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void inspectElementAt(const WebPoint& point);
785e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void evaluateInWebInspector(long callId, const WebString& script);
79f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick    virtual void setRuntimeProperty(const WebString& name, const WebString& value);
805e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    virtual void setTimelineProfilingEnabled(bool enable);
815e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
8206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    // InspectorClient implementation.
8306ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void inspectorDestroyed();
8406ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void openInspectorFrontend(WebCore::InspectorController*);
8506ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void highlight(WebCore::Node*);
8606ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen    virtual void hideHighlight();
8768513a70bcd92384395513322f1b801e7bf9c729Steve Block    virtual void updateInspectorStateCookie(const WTF::String&);
88dd8bb3de4f353a81954234999f1fea748aee2ea9Ben Murdoch    virtual bool sendMessageToFrontend(const WTF::String&);
895e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
905e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    int hostId() { return m_hostId; }
915e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
925e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Blockprivate:
935e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    WebCore::InspectorController* inspectorController();
9465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch    WebCore::Frame* mainFrame();
955e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
965e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    int m_hostId;
975e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    WebDevToolsAgentClient* m_client;
985e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    WebViewImpl* m_webViewImpl;
995e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    OwnPtr<DebuggerAgentImpl> m_debuggerAgentImpl;
1005e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block    bool m_attached;
1015e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block};
1025e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
1035e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block} // namespace WebKit
1045e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block
1055e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block#endif
106