Rename ENABLE_ASYNC_ITERATION to ENABLE_JS_ASYNC_ITERATION
[WebKit-https.git] / Source / WebKitLegacy / mac / WebInspector / WebInspector.mm
1 /*
2  * Copyright (C) 2007, 2015 Apple 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
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer.
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution.
13  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #import "WebInspector.h"
30
31 #import "WebFrameInternal.h"
32 #import "WebInspectorPrivate.h"
33 #import "WebInspectorFrontend.h"
34
35 #include <WebCore/Document.h>
36 #include <WebCore/Frame.h>
37 #include <WebCore/InspectorController.h>
38 #include <WebCore/Page.h>
39
40 using namespace WebCore;
41
42 NSString *WebInspectorDidStartSearchingForNode = @"WebInspectorDidStartSearchingForNode";
43 NSString *WebInspectorDidStopSearchingForNode = @"WebInspectorDidStopSearchingForNode";
44
45 @implementation WebInspector
46 - (id)initWithInspectedWebView:(WebView *)inspectedWebView
47 {
48     if (!(self = [super init]))
49         return nil;
50     _inspectedWebView = inspectedWebView; // not retained to prevent a cycle
51
52     return self;
53 }
54
55 - (void)dealloc
56 {
57     [_frontend release];
58     [super dealloc];
59 }
60
61 - (void)inspectedWebViewClosed
62 {
63     [self close:nil];
64     _inspectedWebView = nil;
65 }
66
67 - (void)showWindow
68 {
69     if (Page* inspectedPage = core(_inspectedWebView))
70         inspectedPage->inspectorController().show();
71 }
72
73 - (void)show:(id)sender
74 {
75     [self showWindow];
76 }
77
78 - (void)showConsole:(id)sender
79 {
80     [self showWindow];
81     [_frontend showConsole];
82 }
83
84 - (BOOL)isDebuggingJavaScript
85 {
86     return _frontend && [_frontend isDebuggingEnabled];
87 }
88
89 - (void)toggleDebuggingJavaScript:(id)sender
90 {
91     [self showWindow];
92
93     if ([self isDebuggingJavaScript])
94         [_frontend setDebuggingEnabled:false];
95     else
96         [_frontend setDebuggingEnabled:true];
97 }
98
99 - (void)startDebuggingJavaScript:(id)sender
100 {
101     if (_frontend)
102         [_frontend setDebuggingEnabled:true];
103 }
104
105 - (void)stopDebuggingJavaScript:(id)sender
106 {
107     if (_frontend)
108         [_frontend setDebuggingEnabled:false];
109 }
110
111 - (BOOL)isProfilingJavaScript
112 {
113     // No longer supported.
114     return NO;
115 }
116
117 - (void)toggleProfilingJavaScript:(id)sender
118 {
119     // No longer supported.
120 }
121
122 - (void)startProfilingJavaScript:(id)sender
123 {
124     // No longer supported.
125 }
126
127 - (void)stopProfilingJavaScript:(id)sender
128 {
129     // No longer supported.
130 }
131
132 - (BOOL)isJavaScriptProfilingEnabled
133 {
134     // No longer supported.
135     return NO;
136 }
137
138 - (void)setJavaScriptProfilingEnabled:(BOOL)enabled
139 {
140     // No longer supported.
141 }
142
143 - (BOOL)isTimelineProfilingEnabled
144 {
145     return _frontend && [_frontend isTimelineProfilingEnabled];
146 }
147
148 - (void)setTimelineProfilingEnabled:(BOOL)enabled
149 {
150     if (_frontend)
151         [_frontend setTimelineProfilingEnabled:enabled];
152 }
153
154 - (BOOL)isOpen
155 {
156     return !!_frontend;
157 }
158
159 - (void)close:(id)sender 
160 {
161     [_frontend close];
162 }
163
164 - (void)attach:(id)sender
165 {
166     [_frontend attach];
167 }
168
169 - (void)detach:(id)sender
170 {
171     [_frontend detach];
172 }
173
174 - (void)evaluateInFrontend:(id)sender script:(NSString *)script
175 {
176     if (Page* inspectedPage = core(_inspectedWebView))
177         inspectedPage->inspectorController().evaluateForTestInFrontend(script);
178 }
179
180 - (void)setFrontend:(WebInspectorFrontend *)frontend
181 {
182     _frontend = [frontend retain];
183 }
184
185 - (void)releaseFrontend
186 {
187     [_frontend release];
188     _frontend = nil;
189 }
190 @end