• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  /*
2   * Copyright (C) 2010 Google Inc. All rights reserved.
3   *
4   * Redistribution and use in source and binary forms, with or without
5   * modification, are permitted provided that the following conditions are
6   * met:
7   *
8   *     * Redistributions of source code must retain the above copyright
9   * notice, this list of conditions and the following disclaimer.
10   *     * Redistributions in binary form must reproduce the above
11   * copyright notice, this list of conditions and the following disclaimer
12   * in the documentation and/or other materials provided with the
13   * distribution.
14   *     * Neither the name of Google Inc. nor the names of its
15   * contributors may be used to endorse or promote products derived from
16   * this software without specific prior written permission.
17   *
18   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29   */
30  
31  #ifndef WebDevToolsAgentImpl_h
32  #define WebDevToolsAgentImpl_h
33  
34  #include "InspectorClient.h"
35  
36  #include "WebDevToolsAgentPrivate.h"
37  
38  #include <wtf/Forward.h>
39  #include <wtf/OwnPtr.h>
40  
41  namespace WebCore {
42  class Document;
43  class Frame;
44  class InspectorClient;
45  class InspectorController;
46  class Node;
47  }
48  
49  namespace WebKit {
50  
51  class DebuggerAgentImpl;
52  class WebDevToolsAgentClient;
53  class WebFrame;
54  class WebFrameImpl;
55  class WebString;
56  class WebURLRequest;
57  class WebURLResponse;
58  class WebViewImpl;
59  struct WebURLError;
60  struct WebDevToolsMessageData;
61  
62  class WebDevToolsAgentImpl : public WebDevToolsAgentPrivate,
63                               public WebCore::InspectorClient {
64  public:
65      WebDevToolsAgentImpl(WebViewImpl* webViewImpl, WebDevToolsAgentClient* client);
66      virtual ~WebDevToolsAgentImpl();
67  
68      // WebDevToolsAgentPrivate implementation.
69      virtual void didClearWindowObject(WebFrameImpl* frame);
70  
71      // WebDevToolsAgent implementation.
72      virtual void attach();
73      virtual void detach();
74      virtual void frontendLoaded();
75      virtual void didNavigate();
76      virtual void dispatchOnInspectorBackend(const WebString& message);
77      virtual void inspectElementAt(const WebPoint& point);
78      virtual void evaluateInWebInspector(long callId, const WebString& script);
79      virtual void setRuntimeProperty(const WebString& name, const WebString& value);
80      virtual void setTimelineProfilingEnabled(bool enable);
81  
82      // InspectorClient implementation.
83      virtual void inspectorDestroyed();
84      virtual void openInspectorFrontend(WebCore::InspectorController*);
85      virtual void highlight(WebCore::Node*);
86      virtual void hideHighlight();
87      virtual void updateInspectorStateCookie(const WTF::String&);
88      virtual bool sendMessageToFrontend(const WTF::String&);
89  
hostId()90      int hostId() { return m_hostId; }
91  
92  private:
93      WebCore::InspectorController* inspectorController();
94      WebCore::Frame* mainFrame();
95  
96      int m_hostId;
97      WebDevToolsAgentClient* m_client;
98      WebViewImpl* m_webViewImpl;
99      OwnPtr<DebuggerAgentImpl> m_debuggerAgentImpl;
100      bool m_attached;
101  };
102  
103  } // namespace WebKit
104  
105  #endif
106