• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008, 2009 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 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 <WebKit/WebUIDelegate.h>
30 
31 #if !defined(ENABLE_DASHBOARD_SUPPORT)
32 #define ENABLE_DASHBOARD_SUPPORT 1
33 #endif
34 
35 // Mail on Tiger expects the old value for WebMenuItemTagSearchInGoogle
36 #define WebMenuItemTagSearchInGoogle OldWebMenuItemTagSearchWeb
37 
38 #define WEBMENUITEMTAG_WEBKIT_3_0_SPI_START 2000
39 enum {
40     // The next three values were used in WebKit 2.0 for SPI. In WebKit 3.0 these are API, with different values.
41     OldWebMenuItemTagSearchInSpotlight = 1000,
42     OldWebMenuItemTagSearchWeb,
43     OldWebMenuItemTagLookUpInDictionary,
44     // FIXME: These should move to WebUIDelegate.h as part of the WebMenuItemTag enum there, when we're not in API freeze
45     // Note that these values must be kept aligned with values in WebCore/ContextMenuItem.h
46     WebMenuItemTagOpenLink = WEBMENUITEMTAG_WEBKIT_3_0_SPI_START,
47     WebMenuItemTagIgnoreGrammar,
48     WebMenuItemTagSpellingMenu,
49     WebMenuItemTagShowSpellingPanel,
50     WebMenuItemTagCheckSpelling,
51     WebMenuItemTagCheckSpellingWhileTyping,
52     WebMenuItemTagCheckGrammarWithSpelling,
53     WebMenuItemTagFontMenu,
54     WebMenuItemTagShowFonts,
55     WebMenuItemTagBold,
56     WebMenuItemTagItalic,
57     WebMenuItemTagUnderline,
58     WebMenuItemTagOutline,
59     WebMenuItemTagStyles,
60     WebMenuItemTagShowColors,
61     WebMenuItemTagSpeechMenu,
62     WebMenuItemTagStartSpeaking,
63     WebMenuItemTagStopSpeaking,
64     WebMenuItemTagWritingDirectionMenu,
65     WebMenuItemTagDefaultDirection,
66     WebMenuItemTagLeftToRight,
67     WebMenuItemTagRightToLeft,
68     WebMenuItemPDFSinglePageScrolling,
69     WebMenuItemPDFFacingPagesScrolling,
70     WebMenuItemTagInspectElement,
71     WebMenuItemTagTextDirectionMenu,
72     WebMenuItemTagTextDirectionDefault,
73     WebMenuItemTagTextDirectionLeftToRight,
74     WebMenuItemTagTextDirectionRightToLeft,
75     WebMenuItemTagCorrectSpellingAutomatically,
76     WebMenuItemTagSubstitutionsMenu,
77     WebMenuItemTagShowSubstitutions,
78     WebMenuItemTagSmartCopyPaste,
79     WebMenuItemTagSmartQuotes,
80     WebMenuItemTagSmartDashes,
81     WebMenuItemTagSmartLinks,
82     WebMenuItemTagTextReplacement,
83     WebMenuItemTagTransformationsMenu,
84     WebMenuItemTagMakeUpperCase,
85     WebMenuItemTagMakeLowerCase,
86     WebMenuItemTagCapitalize,
87     WebMenuItemTagChangeBack,
88     WebMenuItemTagBaseApplication = 10000
89 };
90 
91 @class WebSecurityOrigin;
92 
93 @protocol WebGeolocationPolicyListener <NSObject>
94 - (void)allow;
95 - (void)deny;
96 @end
97 
98 @interface NSObject (WebUIDelegatePrivate)
99 
100 - (void)webView:(WebView *)webView addMessageToConsole:(NSDictionary *)message;
101 
102 - (NSView *)webView:(WebView *)webView plugInViewWithArguments:(NSDictionary *)arguments;
103 
104 #if ENABLE_DASHBOARD_SUPPORT
105 // regions is an dictionary whose keys are regions label and values are arrays of WebDashboardRegions.
106 - (void)webView:(WebView *)webView dashboardRegionsChanged:(NSDictionary *)regions;
107 #endif
108 
109 - (void)webView:(WebView *)sender dragImage:(NSImage *)anImage at:(NSPoint)viewLocation offset:(NSSize)initialOffset event:(NSEvent *)event pasteboard:(NSPasteboard *)pboard source:(id)sourceObj slideBack:(BOOL)slideFlag forView:(NSView *)view;
110 - (void)webView:(WebView *)sender didDrawRect:(NSRect)rect;
111 - (void)webView:(WebView *)sender didScrollDocumentInFrameView:(WebFrameView *)frameView;
112 // FIXME: If we ever make this method public, it should include a WebFrame parameter.
113 - (BOOL)webViewShouldInterruptJavaScript:(WebView *)sender;
114 - (void)webView:(WebView *)sender willPopupMenu:(NSMenu *)menu;
115 - (void)webView:(WebView *)sender contextMenuItemSelected:(NSMenuItem *)item forElement:(NSDictionary *)element;
116 - (void)webView:(WebView *)sender saveFrameView:(WebFrameView *)frameView showingPanel:(BOOL)showingPanel;
117 - (BOOL)webView:(WebView *)sender shouldHaltPlugin:(DOMNode *)pluginNode isWindowed:(BOOL)isWindowed pluginName:(NSString *)pluginName;
118 /*!
119     @method webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:
120     @param sender The WebView sending the delegate method.
121     @param frame The WebFrame whose JavaScript initiated this call.
122     @param origin The security origin that needs a larger quota.
123     @param databaseIdentifier The identifier of the database involved.
124 */
125 - (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier;
126 
127 - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request windowFeatures:(NSDictionary *)features;
128 
129 - (BOOL)webView:(WebView *)sender shouldReplaceUploadFile:(NSString *)path usingGeneratedFilename:(NSString **)filename;
130 - (NSString *)webView:(WebView *)sender generateReplacementFile:(NSString *)path;
131 
132 /*!
133     @method webView:decidePolicyForGeolocationRequestFromOrigin:frame:listener:
134     @abstract
135     @param webView The WebView sending the delegate method.
136     @param origin The security origin that would like to use Geolocation.
137     @param frame The WebFrame whose JavaScript initiated this call.
138     @param listener The object to call when the decision is made
139 */
140 - (void)webView:(WebView *)webView decidePolicyForGeolocationRequestFromOrigin:(WebSecurityOrigin *)origin
141                                                                          frame:(WebFrame *)frame
142                                                                       listener:(id<WebGeolocationPolicyListener>)listener;
143 
144 - (void)webView:(WebView *)sender formStateDidChangeForNode:(DOMNode *)node;
145 - (void)webView:(WebView *)sender formDidFocusNode:(DOMNode *)node;
146 - (void)webView:(WebView *)sender formDidBlurNode:(DOMNode *)node;
147 
148 /*!
149     @method webView:printFrame:
150     @abstract Informs that a WebFrame needs to be printed
151     @param webView The WebView sending the delegate method
152     @param frameView The WebFrame needing to be printed
153     @discussion This method is called when a script or user requests the page to be printed.
154 */
155 - (void)webView:(WebView *)sender printFrame:(WebFrame *)frame;
156 
157 @end
158