<http://webkit.org/b/91015> Remove BUILDING_ON / TARGETING macros in favor of system...
[WebKit-https.git] / Source / WebKit / mac / WebView / WebScriptDebugDelegate.h
1 /*
2  * Copyright (C) 2005 Apple Computer, 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 Computer, 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 <Foundation/Foundation.h>
30
31 #if __MAC_OS_X_VERSION_MIN_REQUIRED == 1050
32 typedef int WebSourceId;
33 #else
34 typedef intptr_t WebSourceId;
35 #endif
36
37 @class WebView;
38 @class WebFrame;
39 @class WebScriptCallFrame;
40 @class WebScriptCallFramePrivate;
41 @class WebScriptObject;
42
43 extern NSString * const WebScriptErrorDomain;
44 extern NSString * const WebScriptErrorDescriptionKey;
45 extern NSString * const WebScriptErrorLineNumberKey;
46
47 enum {
48     WebScriptGeneralErrorCode = -100
49 };
50
51 // WebScriptDebugDelegate messages
52
53 @interface NSObject (WebScriptDebugDelegate)
54
55 // some source was parsed, establishing a "source ID" (>= 0) for future reference
56 // this delegate method is deprecated, please switch to the new version below
57 - (void)webView:(WebView *)webView       didParseSource:(NSString *)source
58                                                 fromURL:(NSString *)url
59                                                sourceId:(WebSourceId)sid
60                                             forWebFrame:(WebFrame *)webFrame;
61
62 // some source was parsed, establishing a "source ID" (>= 0) for future reference
63 - (void)webView:(WebView *)webView       didParseSource:(NSString *)source
64                                          baseLineNumber:(NSUInteger)lineNumber
65                                                 fromURL:(NSURL *)url
66                                                sourceId:(WebSourceId)sid
67                                             forWebFrame:(WebFrame *)webFrame;
68
69 // some source failed to parse
70 - (void)webView:(WebView *)webView  failedToParseSource:(NSString *)source
71                                          baseLineNumber:(NSUInteger)lineNumber
72                                                 fromURL:(NSURL *)url
73                                               withError:(NSError *)error
74                                             forWebFrame:(WebFrame *)webFrame;
75
76 // just entered a stack frame (i.e. called a function, or started global scope)
77 - (void)webView:(WebView *)webView    didEnterCallFrame:(WebScriptCallFrame *)frame
78                                                sourceId:(WebSourceId)sid
79                                                    line:(int)lineno
80                                             forWebFrame:(WebFrame *)webFrame;
81
82 // about to execute some code
83 - (void)webView:(WebView *)webView willExecuteStatement:(WebScriptCallFrame *)frame
84                                                sourceId:(WebSourceId)sid
85                                                    line:(int)lineno
86                                             forWebFrame:(WebFrame *)webFrame;
87
88 // about to leave a stack frame (i.e. return from a function)
89 - (void)webView:(WebView *)webView   willLeaveCallFrame:(WebScriptCallFrame *)frame
90                                                sourceId:(WebSourceId)sid
91                                                    line:(int)lineno
92                                             forWebFrame:(WebFrame *)webFrame;
93
94 // exception is being thrown
95 - (void)webView:(WebView *)webView   exceptionWasRaised:(WebScriptCallFrame *)frame
96                                              hasHandler:(BOOL)hasHandler
97                                                sourceId:(WebSourceId)sid
98                                                    line:(int)lineno
99                                             forWebFrame:(WebFrame *)webFrame;
100
101 // exception is being thrown (deprecated old version; called only if new version is not implemented)
102 - (void)webView:(WebView *)webView   exceptionWasRaised:(WebScriptCallFrame *)frame
103                                                sourceId:(WebSourceId)sid
104                                                    line:(int)lineno
105                                             forWebFrame:(WebFrame *)webFrame;
106
107 @end
108
109
110
111 // WebScriptCallFrame interface
112 //
113 // These objects are passed as arguments to the debug delegate.
114
115 @interface WebScriptCallFrame : NSObject
116 {
117 @private
118     WebScriptCallFramePrivate* _private;
119     id                         _userInfo;
120 }
121
122 // associate user info with frame
123 - (void)setUserInfo:(id)userInfo;
124
125 // retrieve user info
126 - (id)userInfo;
127
128 // get next frame on call stack (or nil if this is already the "global" frame)
129 - (WebScriptCallFrame *)caller;
130
131 // get array of WebScriptObjects for each scope (innermost first, last is always global object)
132 - (NSArray *)scopeChain;
133
134 // get name of function (if available) or nil
135 - (NSString *)functionName;
136
137 // get pending exception (if any) or nil
138 - (id)exception;
139
140 // evaluate a script (as if by "eval") in the context of this frame
141 - (id)evaluateWebScript:(NSString *)script;
142
143 @end