2 * Copyright (C) 2013 Apple Inc. All Rights Reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #if ENABLE(REMOTE_INSPECTOR)
28 #ifndef RemoteInspectorDebuggable_h
29 #define RemoteInspectorDebuggable_h
31 #include <CoreFoundation/CFRunLoop.h>
32 #include <wtf/RetainPtr.h>
33 #include <wtf/text/WTFString.h>
37 class InspectorFrontendChannel
;
38 struct RemoteInspectorDebuggableInfo
;
40 class JS_EXPORT_PRIVATE RemoteInspectorDebuggable
{
42 RemoteInspectorDebuggable();
43 virtual ~RemoteInspectorDebuggable();
48 unsigned identifier() const { return m_identifier
; }
49 void setIdentifier(unsigned identifier
) { m_identifier
= identifier
; }
51 bool remoteDebuggingAllowed() const { return m_allowed
; }
52 void setRemoteDebuggingAllowed(bool);
54 CFRunLoopRef
debuggerRunLoop() { return m_runLoop
.get(); }
55 void setDebuggerRunLoop(CFRunLoopRef runLoop
) { m_runLoop
= runLoop
; }
57 RemoteInspectorDebuggableInfo
info() const;
59 enum DebuggableType
{ JavaScript
, Web
};
60 virtual DebuggableType
type() const = 0;
61 virtual String
name() const { return String(); } // JavaScript and Web
62 virtual String
url() const { return String(); } // Web
63 virtual bool hasLocalDebugger() const = 0;
65 virtual void connect(InspectorFrontendChannel
*) = 0;
66 virtual void disconnect() = 0;
67 virtual void dispatchMessageFromRemoteFrontend(const String
& message
) = 0;
68 virtual void setIndicating(bool) { } // Default is to do nothing.
71 unsigned m_identifier
;
73 RetainPtr
<CFRunLoopRef
> m_runLoop
;
76 struct RemoteInspectorDebuggableInfo
{
77 RemoteInspectorDebuggableInfo()
79 , type(RemoteInspectorDebuggable::JavaScript
)
80 , hasLocalDebugger(false)
81 , remoteDebuggingAllowed(false)
86 RemoteInspectorDebuggable::DebuggableType type
;
89 bool hasLocalDebugger
;
90 bool remoteDebuggingAllowed
;
93 } // namespace Inspector
95 #endif // RemoteInspectorDebuggable_h
97 #endif // ENABLE(REMOTE_INSPECTOR)