2 * Copyright (C) 2006, 2007 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 COMPUTER, 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 COMPUTER, 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.
30 #include "IWebNotificationObserver.h"
31 #include "IWebUIDelegatePrivate.h"
33 #include "IWebViewPrivate.h"
36 #include <WebCore/IntRect.h>
37 #include <WebCore/Timer.h>
38 #include <wtf/OwnPtr.h>
41 class WebBackForwardList;
42 class WebInspectorClient;
44 WebCore::Page* core(IWebView*);
46 interface IDropTargetHelper;
50 , public IWebViewPrivate
51 , public IWebIBActions
53 , public IWebViewEditing
54 , public IWebViewUndoableEditing
55 , public IWebViewEditingActions
56 , public IWebNotificationObserver
60 static WebView* createInstance();
67 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
68 virtual ULONG STDMETHODCALLTYPE AddRef(void);
69 virtual ULONG STDMETHODCALLTYPE Release(void);
73 virtual HRESULT STDMETHODCALLTYPE canShowMIMEType(
74 /* [in] */ BSTR mimeType,
75 /* [retval][out] */ BOOL *canShow);
77 virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML(
78 /* [in] */ BSTR mimeType,
79 /* [retval][out] */ BOOL *canShow);
81 virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML(
82 /* [retval][out] */ IEnumVARIANT **enumVariant);
84 virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML(
85 /* [size_is][in] */ BSTR *mimeTypes,
86 /* [in] */ int cMimeTypes);
88 virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard(
89 /* [in] */ IDataObject *pasteboard,
90 /* [retval][out] */ BSTR *url);
92 virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard(
93 /* [in] */ IDataObject *pasteboard,
94 /* [retval][out] */ BSTR *urlTitle);
96 virtual HRESULT STDMETHODCALLTYPE initWithFrame(
97 /* [in] */ RECT frame,
98 /* [in] */ BSTR frameName,
99 /* [in] */ BSTR groupName);
101 virtual HRESULT STDMETHODCALLTYPE setUIDelegate(
102 /* [in] */ IWebUIDelegate *d);
104 virtual HRESULT STDMETHODCALLTYPE uiDelegate(
105 /* [out][retval] */ IWebUIDelegate **d);
107 virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate(
108 /* [in] */ IWebResourceLoadDelegate *d);
110 virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate(
111 /* [out][retval] */ IWebResourceLoadDelegate **d);
113 virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate(
114 /* [in] */ IWebDownloadDelegate *d);
116 virtual HRESULT STDMETHODCALLTYPE downloadDelegate(
117 /* [out][retval] */ IWebDownloadDelegate **d);
119 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate(
120 /* [in] */ IWebFrameLoadDelegate *d);
122 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate(
123 /* [out][retval] */ IWebFrameLoadDelegate **d);
125 virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate(
126 /* [in] */ IWebPolicyDelegate *d);
128 virtual HRESULT STDMETHODCALLTYPE policyDelegate(
129 /* [out][retval] */ IWebPolicyDelegate **d);
131 virtual HRESULT STDMETHODCALLTYPE mainFrame(
132 /* [out][retval] */ IWebFrame **frame);
134 virtual HRESULT STDMETHODCALLTYPE focusedFrame(
135 /* [out][retval] */ IWebFrame **frame);
137 virtual HRESULT STDMETHODCALLTYPE backForwardList(
138 /* [out][retval] */ IWebBackForwardList **list);
140 virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList(
141 /* [in] */ BOOL flag);
143 virtual HRESULT STDMETHODCALLTYPE goBack(
144 /* [retval][out] */ BOOL *succeeded);
146 virtual HRESULT STDMETHODCALLTYPE goForward(
147 /* [retval][out] */ BOOL *succeeded);
149 virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem(
150 /* [in] */ IWebHistoryItem *item,
151 /* [retval][out] */ BOOL *succeeded);
153 virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier(
154 /* [in] */ float multiplier);
156 virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier(
157 /* [retval][out] */ float *multiplier);
159 virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent(
160 /* [in] */ BSTR applicationName);
162 virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent(
163 /* [retval][out] */ BSTR *applicationName);
165 virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent(
166 /* [in] */ BSTR userAgentString);
168 virtual HRESULT STDMETHODCALLTYPE customUserAgent(
169 /* [retval][out] */ BSTR *userAgentString);
171 virtual HRESULT STDMETHODCALLTYPE userAgentForURL(
173 /* [retval][out] */ BSTR *userAgent);
175 virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding(
176 /* [retval][out] */ BOOL *supports);
178 virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName(
179 /* [in] */ BSTR encodingName);
181 virtual HRESULT STDMETHODCALLTYPE customTextEncodingName(
182 /* [retval][out] */ BSTR *encodingName);
184 virtual HRESULT STDMETHODCALLTYPE setMediaStyle(
185 /* [in] */ BSTR media);
187 virtual HRESULT STDMETHODCALLTYPE mediaStyle(
188 /* [retval][out] */ BSTR *media);
190 virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString(
191 /* [in] */ BSTR script,
192 /* [retval][out] */ BSTR *result);
194 virtual HRESULT STDMETHODCALLTYPE windowScriptObject(
195 /* [retval][out] */ IWebScriptObject **webScriptObject);
197 virtual HRESULT STDMETHODCALLTYPE setPreferences(
198 /* [in] */ IWebPreferences *prefs);
200 virtual HRESULT STDMETHODCALLTYPE preferences(
201 /* [retval][out] */ IWebPreferences **prefs);
203 virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier(
204 /* [in] */ BSTR anIdentifier);
206 virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier(
207 /* [retval][out] */ BSTR *anIdentifier);
209 virtual HRESULT STDMETHODCALLTYPE setHostWindow(
210 /* [in] */ OLE_HANDLE window);
212 virtual HRESULT STDMETHODCALLTYPE hostWindow(
213 /* [retval][out] */ OLE_HANDLE *window);
215 virtual HRESULT STDMETHODCALLTYPE searchFor(
217 /* [in] */ BOOL forward,
218 /* [in] */ BOOL caseFlag,
219 /* [in] */ BOOL wrapFlag,
220 /* [retval][out] */ BOOL *found);
222 virtual HRESULT STDMETHODCALLTYPE registerViewClass(
223 /* [in] */ IWebDocumentView *view,
224 /* [in] */ IWebDocumentRepresentation *representation,
225 /* [in] */ BSTR forMIMEType);
227 virtual HRESULT STDMETHODCALLTYPE setGroupName(
228 /* [in] */ BSTR groupName);
230 virtual HRESULT STDMETHODCALLTYPE groupName(
231 /* [retval][out] */ BSTR *groupName);
233 virtual HRESULT STDMETHODCALLTYPE estimatedProgress(
234 /* [retval][out] */ double *estimatedProgress);
236 virtual HRESULT STDMETHODCALLTYPE isLoading(
237 /* [retval][out] */ BOOL *isLoading);
239 virtual HRESULT STDMETHODCALLTYPE elementAtPoint(
240 /* [in] */ LPPOINT point,
241 /* [retval][out] */ IPropertyBag **elementDictionary);
243 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection(
244 /* [retval][out] */ IEnumVARIANT **enumVariant);
246 virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes(
247 /* [size_is][in] */ BSTR *types,
248 /* [in] */ int cTypes,
249 /* [in] */ IDataObject *pasteboard);
251 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement(
252 /* [in] */ IPropertyBag *elementDictionary,
253 /* [retval][out] */ IEnumVARIANT **enumVariant);
255 virtual HRESULT STDMETHODCALLTYPE writeElement(
256 /* [in] */ IPropertyBag *elementDictionary,
257 /* [size_is][in] */ BSTR *withPasteboardTypes,
258 /* [in] */ int cWithPasteboardTypes,
259 /* [in] */ IDataObject *pasteboard);
261 virtual HRESULT STDMETHODCALLTYPE selectedText(
262 /* [out, retval] */ BSTR* str);
264 virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
265 /* [in] */ IUnknown* sender);
267 virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint(
268 /* [in] */ LPPOINT point);
270 virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
272 virtual HRESULT STDMETHODCALLTYPE setDrawsBackground(
273 /* [in] */ BOOL drawsBackground);
275 virtual HRESULT STDMETHODCALLTYPE drawsBackground(
276 /* [retval][out] */ BOOL *drawsBackground);
278 virtual HRESULT STDMETHODCALLTYPE setMainFrameURL(
279 /* [in] */ BSTR urlString);
281 virtual HRESULT STDMETHODCALLTYPE mainFrameURL(
282 /* [retval][out] */ BSTR *urlString);
284 virtual HRESULT STDMETHODCALLTYPE mainFrameDocument(
285 /* [retval][out] */ IDOMDocument **document);
287 virtual HRESULT STDMETHODCALLTYPE mainFrameTitle(
288 /* [retval][out] */ BSTR *title);
290 virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(
291 /* [retval][out] */ OLE_HANDLE *hBitmap);
295 virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom(
296 /* [in] */ IUnknown *sender);
298 virtual HRESULT STDMETHODCALLTYPE stopLoading(
299 /* [in] */ IUnknown *sender);
301 virtual HRESULT STDMETHODCALLTYPE reload(
302 /* [in] */ IUnknown *sender);
304 virtual HRESULT STDMETHODCALLTYPE canGoBack(
305 /* [in] */ IUnknown *sender,
306 /* [retval][out] */ BOOL *result);
308 virtual HRESULT STDMETHODCALLTYPE goBack(
309 /* [in] */ IUnknown *sender);
311 virtual HRESULT STDMETHODCALLTYPE canGoForward(
312 /* [in] */ IUnknown *sender,
313 /* [retval][out] */ BOOL *result);
315 virtual HRESULT STDMETHODCALLTYPE goForward(
316 /* [in] */ IUnknown *sender);
318 virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger(
319 /* [in] */ IUnknown *sender,
320 /* [retval][out] */ BOOL *result);
322 virtual HRESULT STDMETHODCALLTYPE makeTextLarger(
323 /* [in] */ IUnknown *sender);
325 virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller(
326 /* [in] */ IUnknown *sender,
327 /* [retval][out] */ BOOL *result);
329 virtual HRESULT STDMETHODCALLTYPE makeTextSmaller(
330 /* [in] */ IUnknown *sender);
332 virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize(
333 /* [in] */ IUnknown *sender,
334 /* [retval][out] */ BOOL *result);
336 virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize(
337 /* [in] */ IUnknown *sender);
339 virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking(
340 /* [in] */ IUnknown *sender);
342 virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete(
343 /* [in] */ IUnknown *sender);
345 virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking(
346 /* [in] */ IUnknown *sender);
350 virtual HRESULT STDMETHODCALLTYPE computedStyleForElement(
351 /* [in] */ IDOMElement *element,
352 /* [in] */ BSTR pseudoElement,
353 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
357 virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint(
358 /* [in] */ LPPOINT point,
359 /* [retval][out] */ IDOMRange **range);
361 virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange(
362 /* [in] */ IDOMRange *range,
363 /* [in] */ WebSelectionAffinity affinity);
365 virtual HRESULT STDMETHODCALLTYPE selectedDOMRange(
366 /* [retval][out] */ IDOMRange **range);
368 virtual HRESULT STDMETHODCALLTYPE selectionAffinity(
369 /* [retval][out][retval][out] */ WebSelectionAffinity *affinity);
371 virtual HRESULT STDMETHODCALLTYPE setEditable(
372 /* [in] */ BOOL flag);
374 virtual HRESULT STDMETHODCALLTYPE isEditable(
375 /* [retval][out] */ BOOL *isEditable);
377 virtual HRESULT STDMETHODCALLTYPE setTypingStyle(
378 /* [in] */ IDOMCSSStyleDeclaration *style);
380 virtual HRESULT STDMETHODCALLTYPE typingStyle(
381 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
383 virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled(
384 /* [in] */ BOOL flag);
386 virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled(
387 /* [in] */ BOOL *enabled);
389 virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
390 /* [in] */ BOOL flag);
392 virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled(
393 /* [retval][out] */ BOOL *enabled);
395 virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag(
396 /* [retval][out] */ int *tag);
398 virtual HRESULT STDMETHODCALLTYPE undoManager(
399 /* [retval][out] */ IWebUndoManager **manager);
401 virtual HRESULT STDMETHODCALLTYPE setEditingDelegate(
402 /* [in] */ IWebEditingDelegate *d);
404 virtual HRESULT STDMETHODCALLTYPE editingDelegate(
405 /* [retval][out] */ IWebEditingDelegate **d);
407 virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText(
408 /* [in] */ BSTR text,
409 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
411 virtual HRESULT STDMETHODCALLTYPE hasSelectedRange(
412 /* [retval][out] */ BOOL *hasSelectedRange);
414 virtual HRESULT STDMETHODCALLTYPE cutEnabled(
415 /* [retval][out] */ BOOL *enabled);
417 virtual HRESULT STDMETHODCALLTYPE copyEnabled(
418 /* [retval][out] */ BOOL *enabled);
420 virtual HRESULT STDMETHODCALLTYPE pasteEnabled(
421 /* [retval][out] */ BOOL *enabled);
423 virtual HRESULT STDMETHODCALLTYPE deleteEnabled(
424 /* [retval][out] */ BOOL *enabled);
426 virtual HRESULT STDMETHODCALLTYPE editingEnabled(
427 /* [retval][out] */ BOOL *enabled);
429 virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled(
430 /* [retval][out] */ BOOL *enabled);
432 virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
435 // IWebViewUndoableEditing
437 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode(
438 /* [in] */ IDOMNode *node);
440 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText(
441 /* [in] */ BSTR text);
443 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString(
444 /* [in] */ BSTR markupString);
446 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive(
447 /* [in] */ IWebArchive *archive);
449 virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
451 virtual HRESULT STDMETHODCALLTYPE clearSelection(void);
453 virtual HRESULT STDMETHODCALLTYPE applyStyle(
454 /* [in] */ IDOMCSSStyleDeclaration *style);
456 // IWebViewEditingActions
458 virtual HRESULT STDMETHODCALLTYPE copy(
459 /* [in] */ IUnknown *sender);
461 virtual HRESULT STDMETHODCALLTYPE cut(
462 /* [in] */ IUnknown *sender);
464 virtual HRESULT STDMETHODCALLTYPE paste(
465 /* [in] */ IUnknown *sender);
467 virtual HRESULT STDMETHODCALLTYPE copyURL(
468 /* [in] */ BSTR url);
470 virtual HRESULT STDMETHODCALLTYPE copyFont(
471 /* [in] */ IUnknown *sender);
473 virtual HRESULT STDMETHODCALLTYPE pasteFont(
474 /* [in] */ IUnknown *sender);
476 virtual HRESULT STDMETHODCALLTYPE delete_(
477 /* [in] */ IUnknown *sender);
479 virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText(
480 /* [in] */ IUnknown *sender);
482 virtual HRESULT STDMETHODCALLTYPE pasteAsRichText(
483 /* [in] */ IUnknown *sender);
485 virtual HRESULT STDMETHODCALLTYPE changeFont(
486 /* [in] */ IUnknown *sender);
488 virtual HRESULT STDMETHODCALLTYPE changeAttributes(
489 /* [in] */ IUnknown *sender);
491 virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor(
492 /* [in] */ IUnknown *sender);
494 virtual HRESULT STDMETHODCALLTYPE changeColor(
495 /* [in] */ IUnknown *sender);
497 virtual HRESULT STDMETHODCALLTYPE alignCenter(
498 /* [in] */ IUnknown *sender);
500 virtual HRESULT STDMETHODCALLTYPE alignJustified(
501 /* [in] */ IUnknown *sender);
503 virtual HRESULT STDMETHODCALLTYPE alignLeft(
504 /* [in] */ IUnknown *sender);
506 virtual HRESULT STDMETHODCALLTYPE alignRight(
507 /* [in] */ IUnknown *sender);
509 virtual HRESULT STDMETHODCALLTYPE checkSpelling(
510 /* [in] */ IUnknown *sender);
512 virtual HRESULT STDMETHODCALLTYPE showGuessPanel(
513 /* [in] */ IUnknown *sender);
515 virtual HRESULT STDMETHODCALLTYPE performFindPanelAction(
516 /* [in] */ IUnknown *sender);
518 virtual HRESULT STDMETHODCALLTYPE startSpeaking(
519 /* [in] */ IUnknown *sender);
521 virtual HRESULT STDMETHODCALLTYPE stopSpeaking(
522 /* [in] */ IUnknown *sender);
524 // IWebNotificationObserver
526 virtual HRESULT STDMETHODCALLTYPE onNotify(
527 /* [in] */ IWebNotification *notification);
530 virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
531 /* [in] */ IDropTarget* dt);
533 virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
535 virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode(
536 /* [in] */ BOOL flag);
538 virtual HRESULT STDMETHODCALLTYPE inViewSourceMode(
539 /* [retval][out] */ BOOL* flag);
541 virtual HRESULT STDMETHODCALLTYPE viewWindow(
542 /* [retval][out] */ OLE_HANDLE *window);
544 virtual HRESULT STDMETHODCALLTYPE setFormDelegate(
545 /* [in] */ IWebFormDelegate *formDelegate);
547 virtual HRESULT STDMETHODCALLTYPE formDelegate(
548 /* [retval][out] */ IWebFormDelegate **formDelegate);
550 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate(
551 /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
553 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate(
554 /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
556 virtual HRESULT STDMETHODCALLTYPE scrollOffset(
557 /* [retval][out] */ LPPOINT offset);
559 virtual HRESULT STDMETHODCALLTYPE scrollBy(
560 /* [in] */ LPPOINT offset);
562 virtual HRESULT STDMETHODCALLTYPE visibleContentRect(
563 /* [retval][out] */ LPRECT rect);
565 virtual HRESULT STDMETHODCALLTYPE updateActiveState(void);
567 virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText(
568 BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches);
570 virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches();
572 virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches(
573 IEnumTextMatches** pmatches);
575 virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(
576 BOOL forceWhiteText, OLE_HANDLE* hBitmap);
578 virtual HRESULT STDMETHODCALLTYPE selectionImageRect(
581 virtual HRESULT STDMETHODCALLTYPE DragEnter(
582 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
584 virtual HRESULT STDMETHODCALLTYPE DragOver(
585 DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
587 virtual HRESULT STDMETHODCALLTYPE DragLeave();
589 virtual HRESULT STDMETHODCALLTYPE Drop(
590 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
592 virtual HRESULT STDMETHODCALLTYPE canHandleRequest(
593 IWebURLRequest *request,
596 virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
598 virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements(
599 /* [in] */ BOOL cycles);
601 virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements(
602 /* [retval][out] */ BOOL *result);
604 virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
605 /* [in] */ BOOL allows);
607 virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginPath(
608 /* [in] */ BSTR path);
610 virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView(
611 /* [in] */ IWebView *otherView);
614 WebCore::Page* page();
615 bool handleMouseEvent(UINT, WPARAM, LPARAM);
616 void setMouseActivated(bool flag) { m_mouseActivated = flag; }
617 bool handleContextMenuEvent(WPARAM, LPARAM);
618 bool onMeasureItem(WPARAM, LPARAM);
619 bool onDrawItem(WPARAM, LPARAM);
620 bool onInitMenuPopup(WPARAM, LPARAM);
621 bool onUninitMenuPopup(WPARAM, LPARAM);
622 void performContextMenuAction(WPARAM, LPARAM, bool byPosition);
623 bool mouseWheel(WPARAM, LPARAM, bool isHorizontal);
624 bool execCommand(WPARAM wParam, LPARAM lParam);
625 bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
626 bool keyUp(WPARAM, LPARAM);
627 HRESULT updateWebCoreSettingsFromPreferences(IWebPreferences* preferences);
628 bool inResizer(LPARAM lParam);
629 void paint(HDC, LPARAM);
630 void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, LPRECT dirtyRect);
631 void paintIntoWindow(HDC bitmapDC, HDC windowDC, LPRECT dirtyRect);
632 bool ensureBackingStore();
633 void addToDirtyRegion(const WebCore::IntRect&);
634 void addToDirtyRegion(HRGN);
635 void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
636 void updateBackingStore(WebCore::FrameView*, HDC, bool backingStoreCompletelyDirty);
637 void deleteBackingStore();
638 void frameRect(RECT* rect);
640 void closeWindowSoon();
642 bool didClose() const { return m_didClose; }
643 void setProhibitsMainFrameScrolling(bool = true);
645 bool onIMEStartComposition();
646 bool onIMEComposition(LPARAM);
647 bool onIMEEndComposition();
648 bool onIMEChar(WPARAM, LPARAM);
649 bool onIMENotify(WPARAM, LPARAM, LRESULT*);
650 bool onIMERequest(WPARAM, LPARAM, LRESULT*);
651 bool onIMESelect(WPARAM, LPARAM);
652 bool onIMESetContext(WPARAM, LPARAM);
653 void selectionChanged();
654 void resetIME(WebCore::Frame*);
655 bool inIMEKeyDown() const { return m_inIMEKeyDown; }
656 void setInputMethodState(bool);
658 HRESULT registerDragDrop();
659 HRESULT revokeDragDrop();
661 // Convenient to be able to violate the rules of COM here for easy movement to the frame.
662 WebFrame* topLevelFrame() { return m_mainFrame; }
663 const WebCore::String& userAgentForKURL(const WebCore::KURL& url);
665 static bool canHandleRequest(const WebCore::ResourceRequest&);
667 void setIsBeingDestroyed() { m_isBeingDestroyed = true; }
668 bool isBeingDestroyed() const { return m_isBeingDestroyed; }
670 const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
671 bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
673 bool isPainting() const { return m_paintCount > 0; }
675 void setToolTip(const WebCore::String&);
677 void registerForIconNotification(bool listen);
678 HRESULT notifyDidAddIcon(IWebNotification*);
679 void dispatchDidReceiveIconFromWebFrame(WebFrame*);
682 HIMC getIMMContext();
683 void releaseIMMContext(HIMC);
684 static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; }
685 void preflightSpellChecker();
686 bool continuousCheckingAllowed();
687 void initializeCacheSizesIfNecessary();
688 void initializeToolTipWindow();
689 void closeWindowTimerFired(WebCore::Timer<WebView>*);
690 void prepareCandidateWindow(WebCore::Frame*, HIMC);
691 void updateSelectionForIME();
692 bool onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*, LRESULT*);
693 bool onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*, LRESULT*);
694 bool developerExtrasEnabled() const;
697 WebCore::String m_groupName;
700 WebFrame* m_mainFrame;
701 WebCore::Page* m_page;
703 OwnPtr<HBITMAP> m_backingStoreBitmap;
704 SIZE m_backingStoreSize;
705 OwnPtr<HRGN> m_backingStoreDirtyRegion;
707 COMPtr<IWebEditingDelegate> m_editingDelegate;
708 COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate;
709 COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate;
710 COMPtr<IWebUIDelegate> m_uiDelegate;
711 COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate;
712 COMPtr<IWebFormDelegate> m_formDelegate;
713 COMPtr<IWebPolicyDelegate> m_policyDelegate;
714 COMPtr<IWebPreferences> m_preferences;
715 COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
716 COMPtr<IWebDownloadDelegate> m_downloadDelegate;
717 bool m_userAgentOverridden;
718 bool m_useBackForwardList;
719 WebCore::String m_userAgentCustom;
720 WebCore::String m_userAgentStandard;
721 float m_textSizeMultiplier;
722 WebCore::String m_overrideEncoding;
723 WebCore::String m_applicationName;
724 bool m_mouseActivated;
725 // WebCore dragging logic needs to be able to inspect the drag data
726 // this is updated in DragEnter/Leave/Drop
727 COMPtr<IDataObject> m_dragData;
728 COMPtr<IDropTargetHelper> m_dropTargetHelper;
729 UChar m_currentCharacterCode;
730 bool m_isBeingDestroyed;
731 unsigned m_paintCount;
732 bool m_hasSpellCheckerDocumentTag;
733 bool m_smartInsertDeleteEnabled;
735 bool m_hasCustomDropTarget;
736 unsigned m_inIMEComposition;
739 WebCore::String m_toolTip;
741 static bool s_allowSiteSpecificHacks;
743 WebCore::Timer<WebView> m_closeWindowTimer;