2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2009, 2010, 2011 Appcelerator, Inc. All rights reserved.
4 * Copyright (C) 2011 Brent Fulgham. All rights reserved.
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16 * EXPRESS OR IMPLIED WARRANTIES, INCfLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABIuLITY AND FITNESS FOR A PARTICULAR
18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 #include "WebPreferences.h"
34 #include <WebCore/COMPtr.h>
35 #include <WebCore/DragActions.h>
36 #include <WebCore/IntRect.h>
37 #include <WebCore/RefCountedGDIHandle.h>
38 #include <WebCore/SuspendableTimer.h>
39 #include <WebCore/WindowMessageListener.h>
40 #include <wtf/HashSet.h>
41 #include <wtf/OwnPtr.h>
42 #include <wtf/RefPtr.h>
44 #if USE(ACCELERATED_COMPOSITING)
45 #include <WebCore/CACFLayerTreeHostClient.h>
46 #include <WebCore/GraphicsLayerClient.h>
49 #if ENABLE(FULLSCREEN_API)
50 #include <WebCore/FullScreenControllerClient.h>
54 #if USE(ACCELERATED_COMPOSITING)
55 class CACFLayerTreeHost;
57 class FullScreenController;
58 #if PLATFORM(WIN) && USE(AVFOUNDATION)
59 struct GraphicsDeviceAdapter;
67 class FullscreenVideoController;
68 class WebBackForwardList;
71 class WebInspectorClient;
73 typedef WebCore::RefCountedGDIHandle<HBITMAP> RefCountedHBITMAP;
74 typedef WebCore::RefCountedGDIHandle<HRGN> RefCountedHRGN;
76 WebView* kit(WebCore::Page*);
77 WebCore::Page* core(IWebView*);
79 interface IDropTargetHelper;
83 , public IWebViewPrivate
84 , public IWebIBActions
86 , public IWebViewEditing
87 , public IWebViewUndoableEditing
88 , public IWebViewEditingActions
89 , public IWebNotificationObserver
91 , WebCore::WindowMessageListener
92 #if USE(ACCELERATED_COMPOSITING)
93 , WebCore::GraphicsLayerClient
94 , WebCore::CACFLayerTreeHostClient
96 #if ENABLE(FULLSCREEN_API)
97 , WebCore::FullScreenControllerClient
101 static WebView* createInstance();
108 virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
109 virtual ULONG STDMETHODCALLTYPE AddRef(void);
110 virtual ULONG STDMETHODCALLTYPE Release(void);
114 virtual HRESULT STDMETHODCALLTYPE canShowMIMEType(
115 /* [in] */ BSTR mimeType,
116 /* [retval][out] */ BOOL *canShow);
118 virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML(
119 /* [in] */ BSTR mimeType,
120 /* [retval][out] */ BOOL *canShow);
122 virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML(
123 /* [retval][out] */ IEnumVARIANT **enumVariant);
125 virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML(
126 /* [size_is][in] */ BSTR *mimeTypes,
127 /* [in] */ int cMimeTypes);
129 virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard(
130 /* [in] */ IDataObject *pasteboard,
131 /* [retval][out] */ BSTR *url);
133 virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard(
134 /* [in] */ IDataObject *pasteboard,
135 /* [retval][out] */ BSTR *urlTitle);
137 virtual HRESULT STDMETHODCALLTYPE initWithFrame(
138 /* [in] */ RECT frame,
139 /* [in] */ BSTR frameName,
140 /* [in] */ BSTR groupName);
142 virtual HRESULT STDMETHODCALLTYPE setAccessibilityDelegate(
143 /* [in] */ IAccessibilityDelegate *d);
145 virtual HRESULT STDMETHODCALLTYPE accessibilityDelegate(
146 /* [out][retval] */ IAccessibilityDelegate **d);
148 virtual HRESULT STDMETHODCALLTYPE setUIDelegate(
149 /* [in] */ IWebUIDelegate *d);
151 virtual HRESULT STDMETHODCALLTYPE uiDelegate(
152 /* [out][retval] */ IWebUIDelegate **d);
154 virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate(
155 /* [in] */ IWebResourceLoadDelegate *d);
157 virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate(
158 /* [out][retval] */ IWebResourceLoadDelegate **d);
160 virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate(
161 /* [in] */ IWebDownloadDelegate *d);
163 virtual HRESULT STDMETHODCALLTYPE downloadDelegate(
164 /* [out][retval] */ IWebDownloadDelegate **d);
166 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate(
167 /* [in] */ IWebFrameLoadDelegate *d);
169 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate(
170 /* [out][retval] */ IWebFrameLoadDelegate **d);
172 virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate(
173 /* [in] */ IWebPolicyDelegate *d);
175 virtual HRESULT STDMETHODCALLTYPE policyDelegate(
176 /* [out][retval] */ IWebPolicyDelegate **d);
178 virtual HRESULT STDMETHODCALLTYPE mainFrame(
179 /* [out][retval] */ IWebFrame **frame);
181 virtual HRESULT STDMETHODCALLTYPE focusedFrame(
182 /* [out][retval] */ IWebFrame **frame);
184 virtual HRESULT STDMETHODCALLTYPE backForwardList(
185 /* [out][retval] */ IWebBackForwardList **list);
187 virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList(
188 /* [in] */ BOOL flag);
190 virtual HRESULT STDMETHODCALLTYPE goBack(
191 /* [retval][out] */ BOOL *succeeded);
193 virtual HRESULT STDMETHODCALLTYPE goForward(
194 /* [retval][out] */ BOOL *succeeded);
196 virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem(
197 /* [in] */ IWebHistoryItem *item,
198 /* [retval][out] */ BOOL *succeeded);
200 virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier(
201 /* [in] */ float multiplier);
203 virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier(
204 /* [retval][out] */ float *multiplier);
206 virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent(
207 /* [in] */ BSTR applicationName);
209 virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent(
210 /* [retval][out] */ BSTR *applicationName);
212 virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent(
213 /* [in] */ BSTR userAgentString);
215 virtual HRESULT STDMETHODCALLTYPE customUserAgent(
216 /* [retval][out] */ BSTR *userAgentString);
218 virtual HRESULT STDMETHODCALLTYPE userAgentForURL(
220 /* [retval][out] */ BSTR *userAgent);
222 virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding(
223 /* [retval][out] */ BOOL *supports);
225 virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName(
226 /* [in] */ BSTR encodingName);
228 virtual HRESULT STDMETHODCALLTYPE customTextEncodingName(
229 /* [retval][out] */ BSTR *encodingName);
231 virtual HRESULT STDMETHODCALLTYPE setMediaStyle(
232 /* [in] */ BSTR media);
234 virtual HRESULT STDMETHODCALLTYPE mediaStyle(
235 /* [retval][out] */ BSTR *media);
237 virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString(
238 /* [in] */ BSTR script,
239 /* [retval][out] */ BSTR *result);
241 virtual HRESULT STDMETHODCALLTYPE windowScriptObject(
242 /* [retval][out] */ IWebScriptObject **webScriptObject);
244 virtual HRESULT STDMETHODCALLTYPE setPreferences(
245 /* [in] */ IWebPreferences *prefs);
247 virtual HRESULT STDMETHODCALLTYPE preferences(
248 /* [retval][out] */ IWebPreferences **prefs);
250 virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier(
251 /* [in] */ BSTR anIdentifier);
253 virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier(
254 /* [retval][out] */ BSTR *anIdentifier);
256 virtual HRESULT STDMETHODCALLTYPE setHostWindow(
257 /* [in] */ OLE_HANDLE window);
259 virtual HRESULT STDMETHODCALLTYPE hostWindow(
260 /* [retval][out] */ OLE_HANDLE *window);
262 virtual HRESULT STDMETHODCALLTYPE searchFor(
264 /* [in] */ BOOL forward,
265 /* [in] */ BOOL caseFlag,
266 /* [in] */ BOOL wrapFlag,
267 /* [retval][out] */ BOOL *found);
269 virtual HRESULT STDMETHODCALLTYPE registerViewClass(
270 /* [in] */ IWebDocumentView *view,
271 /* [in] */ IWebDocumentRepresentation *representation,
272 /* [in] */ BSTR forMIMEType);
274 virtual HRESULT STDMETHODCALLTYPE setGroupName(
275 /* [in] */ BSTR groupName);
277 virtual HRESULT STDMETHODCALLTYPE groupName(
278 /* [retval][out] */ BSTR *groupName);
280 virtual HRESULT STDMETHODCALLTYPE estimatedProgress(
281 /* [retval][out] */ double *estimatedProgress);
283 virtual HRESULT STDMETHODCALLTYPE isLoading(
284 /* [retval][out] */ BOOL *isLoading);
286 virtual HRESULT STDMETHODCALLTYPE elementAtPoint(
287 /* [in] */ LPPOINT point,
288 /* [retval][out] */ IPropertyBag **elementDictionary);
290 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection(
291 /* [retval][out] */ IEnumVARIANT **enumVariant);
293 virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes(
294 /* [size_is][in] */ BSTR *types,
295 /* [in] */ int cTypes,
296 /* [in] */ IDataObject *pasteboard);
298 virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement(
299 /* [in] */ IPropertyBag *elementDictionary,
300 /* [retval][out] */ IEnumVARIANT **enumVariant);
302 virtual HRESULT STDMETHODCALLTYPE writeElement(
303 /* [in] */ IPropertyBag *elementDictionary,
304 /* [size_is][in] */ BSTR *withPasteboardTypes,
305 /* [in] */ int cWithPasteboardTypes,
306 /* [in] */ IDataObject *pasteboard);
308 virtual HRESULT STDMETHODCALLTYPE selectedText(
309 /* [out, retval] */ BSTR* str);
311 virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
312 /* [in] */ IUnknown* sender);
314 virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint(
315 /* [in] */ LPPOINT point);
317 virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
319 virtual HRESULT STDMETHODCALLTYPE setDrawsBackground(
320 /* [in] */ BOOL drawsBackground);
322 virtual HRESULT STDMETHODCALLTYPE drawsBackground(
323 /* [retval][out] */ BOOL *drawsBackground);
325 virtual HRESULT STDMETHODCALLTYPE setMainFrameURL(
326 /* [in] */ BSTR urlString);
328 virtual HRESULT STDMETHODCALLTYPE mainFrameURL(
329 /* [retval][out] */ BSTR *urlString);
331 virtual HRESULT STDMETHODCALLTYPE mainFrameDocument(
332 /* [retval][out] */ IDOMDocument **document);
334 virtual HRESULT STDMETHODCALLTYPE mainFrameTitle(
335 /* [retval][out] */ BSTR *title);
337 virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(
338 /* [retval][out] */ OLE_HANDLE *hBitmap);
340 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsLocal(
341 /* [in] */ BSTR scheme);
343 virtual HRESULT STDMETHODCALLTYPE close();
347 virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom(
348 /* [in] */ IUnknown *sender);
350 virtual HRESULT STDMETHODCALLTYPE stopLoading(
351 /* [in] */ IUnknown *sender);
353 virtual HRESULT STDMETHODCALLTYPE reload(
354 /* [in] */ IUnknown *sender);
356 virtual HRESULT STDMETHODCALLTYPE canGoBack(
357 /* [in] */ IUnknown *sender,
358 /* [retval][out] */ BOOL *result);
360 virtual HRESULT STDMETHODCALLTYPE goBack(
361 /* [in] */ IUnknown *sender);
363 virtual HRESULT STDMETHODCALLTYPE canGoForward(
364 /* [in] */ IUnknown *sender,
365 /* [retval][out] */ BOOL *result);
367 virtual HRESULT STDMETHODCALLTYPE goForward(
368 /* [in] */ IUnknown *sender);
370 virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger(
371 /* [in] */ IUnknown *sender,
372 /* [retval][out] */ BOOL *result);
374 virtual HRESULT STDMETHODCALLTYPE makeTextLarger(
375 /* [in] */ IUnknown *sender);
377 virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller(
378 /* [in] */ IUnknown *sender,
379 /* [retval][out] */ BOOL *result);
381 virtual HRESULT STDMETHODCALLTYPE makeTextSmaller(
382 /* [in] */ IUnknown *sender);
384 virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize(
385 /* [in] */ IUnknown *sender,
386 /* [retval][out] */ BOOL *result);
388 virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize(
389 /* [in] */ IUnknown *sender);
391 virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking(
392 /* [in] */ IUnknown *sender);
394 virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete(
395 /* [in] */ IUnknown *sender);
397 virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking(
398 /* [in] */ IUnknown *sender);
400 virtual HRESULT STDMETHODCALLTYPE reloadFromOrigin(
401 /* [in] */ IUnknown *sender);
405 virtual HRESULT STDMETHODCALLTYPE computedStyleForElement(
406 /* [in] */ IDOMElement *element,
407 /* [in] */ BSTR pseudoElement,
408 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
412 virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint(
413 /* [in] */ LPPOINT point,
414 /* [retval][out] */ IDOMRange **range);
416 virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange(
417 /* [in] */ IDOMRange *range,
418 /* [in] */ WebSelectionAffinity affinity);
420 virtual HRESULT STDMETHODCALLTYPE selectedDOMRange(
421 /* [retval][out] */ IDOMRange **range);
423 virtual HRESULT STDMETHODCALLTYPE selectionAffinity(
424 /* [retval][out][retval][out] */ WebSelectionAffinity *affinity);
426 virtual HRESULT STDMETHODCALLTYPE setEditable(
427 /* [in] */ BOOL flag);
429 virtual HRESULT STDMETHODCALLTYPE isEditable(
430 /* [retval][out] */ BOOL *isEditable);
432 virtual HRESULT STDMETHODCALLTYPE setTypingStyle(
433 /* [in] */ IDOMCSSStyleDeclaration *style);
435 virtual HRESULT STDMETHODCALLTYPE typingStyle(
436 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
438 virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled(
439 /* [in] */ BOOL flag);
441 virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled(
442 /* [in] */ BOOL *enabled);
444 virtual HRESULT STDMETHODCALLTYPE setSelectTrailingWhitespaceEnabled(
445 /* [in] */ BOOL flag);
447 virtual HRESULT STDMETHODCALLTYPE isSelectTrailingWhitespaceEnabled(
448 /* [in] */ BOOL *enabled);
450 virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
451 /* [in] */ BOOL flag);
453 virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled(
454 /* [retval][out] */ BOOL *enabled);
456 virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag(
457 /* [retval][out] */ int *tag);
459 virtual HRESULT STDMETHODCALLTYPE undoManager(
460 /* [retval][out] */ IWebUndoManager **manager);
462 virtual HRESULT STDMETHODCALLTYPE setEditingDelegate(
463 /* [in] */ IWebEditingDelegate *d);
465 virtual HRESULT STDMETHODCALLTYPE editingDelegate(
466 /* [retval][out] */ IWebEditingDelegate **d);
468 virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText(
469 /* [in] */ BSTR text,
470 /* [retval][out] */ IDOMCSSStyleDeclaration **style);
472 virtual HRESULT STDMETHODCALLTYPE hasSelectedRange(
473 /* [retval][out] */ BOOL *hasSelectedRange);
475 virtual HRESULT STDMETHODCALLTYPE cutEnabled(
476 /* [retval][out] */ BOOL *enabled);
478 virtual HRESULT STDMETHODCALLTYPE copyEnabled(
479 /* [retval][out] */ BOOL *enabled);
481 virtual HRESULT STDMETHODCALLTYPE pasteEnabled(
482 /* [retval][out] */ BOOL *enabled);
484 virtual HRESULT STDMETHODCALLTYPE deleteEnabled(
485 /* [retval][out] */ BOOL *enabled);
487 virtual HRESULT STDMETHODCALLTYPE editingEnabled(
488 /* [retval][out] */ BOOL *enabled);
490 virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled(
491 /* [retval][out] */ BOOL *enabled);
493 virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
496 virtual HRESULT STDMETHODCALLTYPE setPageSizeMultiplier(
497 /* [in] */ float multiplier);
499 virtual HRESULT STDMETHODCALLTYPE pageSizeMultiplier(
500 /* [retval][out] */ float *multiplier);
502 virtual HRESULT STDMETHODCALLTYPE canZoomPageIn(
503 /* [in] */ IUnknown *sender,
504 /* [retval][out] */ BOOL *result);
506 virtual HRESULT STDMETHODCALLTYPE zoomPageIn(
507 /* [in] */ IUnknown *sender);
509 virtual HRESULT STDMETHODCALLTYPE canZoomPageOut(
510 /* [in] */ IUnknown *sender,
511 /* [retval][out] */ BOOL *result);
513 virtual HRESULT STDMETHODCALLTYPE zoomPageOut(
514 /* [in] */ IUnknown *sender);
516 virtual HRESULT STDMETHODCALLTYPE canResetPageZoom(
517 /* [in] */ IUnknown *sender,
518 /* [retval][out] */ BOOL *result);
520 virtual HRESULT STDMETHODCALLTYPE resetPageZoom(
521 /* [in] */ IUnknown *sender);
523 // IWebViewUndoableEditing
525 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode(
526 /* [in] */ IDOMNode *node);
528 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText(
529 /* [in] */ BSTR text);
531 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString(
532 /* [in] */ BSTR markupString);
534 virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive(
535 /* [in] */ IWebArchive *archive);
537 virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
539 virtual HRESULT STDMETHODCALLTYPE clearSelection(void);
541 virtual HRESULT STDMETHODCALLTYPE applyStyle(
542 /* [in] */ IDOMCSSStyleDeclaration *style);
544 // IWebViewEditingActions
546 virtual HRESULT STDMETHODCALLTYPE copy(
547 /* [in] */ IUnknown *sender);
549 virtual HRESULT STDMETHODCALLTYPE cut(
550 /* [in] */ IUnknown *sender);
552 virtual HRESULT STDMETHODCALLTYPE paste(
553 /* [in] */ IUnknown *sender);
555 virtual HRESULT STDMETHODCALLTYPE copyURL(
556 /* [in] */ BSTR url);
558 virtual HRESULT STDMETHODCALLTYPE copyFont(
559 /* [in] */ IUnknown *sender);
561 virtual HRESULT STDMETHODCALLTYPE pasteFont(
562 /* [in] */ IUnknown *sender);
564 virtual HRESULT STDMETHODCALLTYPE delete_(
565 /* [in] */ IUnknown *sender);
567 virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText(
568 /* [in] */ IUnknown *sender);
570 virtual HRESULT STDMETHODCALLTYPE pasteAsRichText(
571 /* [in] */ IUnknown *sender);
573 virtual HRESULT STDMETHODCALLTYPE changeFont(
574 /* [in] */ IUnknown *sender);
576 virtual HRESULT STDMETHODCALLTYPE changeAttributes(
577 /* [in] */ IUnknown *sender);
579 virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor(
580 /* [in] */ IUnknown *sender);
582 virtual HRESULT STDMETHODCALLTYPE changeColor(
583 /* [in] */ IUnknown *sender);
585 virtual HRESULT STDMETHODCALLTYPE alignCenter(
586 /* [in] */ IUnknown *sender);
588 virtual HRESULT STDMETHODCALLTYPE alignJustified(
589 /* [in] */ IUnknown *sender);
591 virtual HRESULT STDMETHODCALLTYPE alignLeft(
592 /* [in] */ IUnknown *sender);
594 virtual HRESULT STDMETHODCALLTYPE alignRight(
595 /* [in] */ IUnknown *sender);
597 virtual HRESULT STDMETHODCALLTYPE checkSpelling(
598 /* [in] */ IUnknown *sender);
600 virtual HRESULT STDMETHODCALLTYPE showGuessPanel(
601 /* [in] */ IUnknown *sender);
603 virtual HRESULT STDMETHODCALLTYPE performFindPanelAction(
604 /* [in] */ IUnknown *sender);
606 virtual HRESULT STDMETHODCALLTYPE startSpeaking(
607 /* [in] */ IUnknown *sender);
609 virtual HRESULT STDMETHODCALLTYPE stopSpeaking(
610 /* [in] */ IUnknown *sender);
612 // IWebNotificationObserver
614 virtual HRESULT STDMETHODCALLTYPE onNotify(
615 /* [in] */ IWebNotification *notification);
619 virtual HRESULT STDMETHODCALLTYPE MIMETypeForExtension(
620 /* [in] */ BSTR extension,
621 /* [retval][out] */ BSTR *mimeType);
623 virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
624 /* [in] */ IDropTarget* dt);
626 virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
628 virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode(
629 /* [in] */ BOOL flag);
631 virtual HRESULT STDMETHODCALLTYPE inViewSourceMode(
632 /* [retval][out] */ BOOL* flag);
634 virtual HRESULT STDMETHODCALLTYPE viewWindow(
635 /* [retval][out] */ OLE_HANDLE *window);
637 virtual HRESULT STDMETHODCALLTYPE setFormDelegate(
638 /* [in] */ IWebFormDelegate *formDelegate);
640 virtual HRESULT STDMETHODCALLTYPE formDelegate(
641 /* [retval][out] */ IWebFormDelegate **formDelegate);
643 virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate(
644 /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
646 virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate(
647 /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
649 virtual HRESULT STDMETHODCALLTYPE scrollOffset(
650 /* [retval][out] */ LPPOINT offset);
652 virtual HRESULT STDMETHODCALLTYPE scrollBy(
653 /* [in] */ LPPOINT offset);
655 virtual HRESULT STDMETHODCALLTYPE visibleContentRect(
656 /* [retval][out] */ LPRECT rect);
658 virtual HRESULT STDMETHODCALLTYPE updateFocusedAndActiveState();
660 virtual HRESULT STDMETHODCALLTYPE executeCoreCommandByName(BSTR name, BSTR value);
662 virtual HRESULT STDMETHODCALLTYPE clearMainFrameName();
664 virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText(
665 BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches);
667 virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches();
669 virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches(
670 IEnumTextMatches** pmatches);
672 virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(
673 BOOL forceWhiteText, OLE_HANDLE* hBitmap);
675 virtual HRESULT STDMETHODCALLTYPE selectionRect(
678 virtual HRESULT STDMETHODCALLTYPE DragEnter(
679 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
681 virtual HRESULT STDMETHODCALLTYPE DragOver(
682 DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
684 virtual HRESULT STDMETHODCALLTYPE DragLeave();
686 virtual HRESULT STDMETHODCALLTYPE Drop(
687 IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
689 virtual HRESULT STDMETHODCALLTYPE canHandleRequest(
690 IWebURLRequest *request,
693 virtual HRESULT STDMETHODCALLTYPE standardUserAgentWithApplicationName(
694 /* [in] */ BSTR applicationName,
695 /* [retval][out] */ BSTR *groupName);
697 virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
699 virtual HRESULT STDMETHODCALLTYPE setInitialFocus(
700 /* [in] */ BOOL forward);
702 virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements(
703 /* [in] */ BOOL cycles);
705 virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements(
706 /* [retval][out] */ BOOL *result);
708 virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
709 /* [in] */ BOOL allows);
711 virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginDirectory(
712 /* [in] */ BSTR directory);
714 virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView(
715 /* [in] */ IWebView *otherView);
717 virtual HRESULT STDMETHODCALLTYPE inspector(
718 /* [retval][out] */ IWebInspector**);
720 virtual HRESULT STDMETHODCALLTYPE clearUndoRedoOperations( void);
721 virtual HRESULT STDMETHODCALLTYPE shouldClose(
722 /* [retval][out] */ BOOL* result);
724 virtual HRESULT STDMETHODCALLTYPE setProhibitsMainFrameScrolling(BOOL);
725 virtual HRESULT STDMETHODCALLTYPE setShouldApplyMacFontAscentHack(BOOL);
727 virtual HRESULT STDMETHODCALLTYPE windowAncestryDidChange();
729 virtual HRESULT STDMETHODCALLTYPE paintDocumentRectToContext(
730 /* [in] */ RECT rect,
731 /* [in] */ OLE_HANDLE dc);
733 virtual HRESULT STDMETHODCALLTYPE paintScrollViewRectToContextAtPoint(
734 /* [in] */ RECT rect,
736 /* [in] */ OLE_HANDLE dc);
738 virtual HRESULT STDMETHODCALLTYPE reportException(
739 /* [in] */ JSContextRef context,
740 /* [in] */ JSValueRef exception);
742 virtual HRESULT STDMETHODCALLTYPE elementFromJS(
743 /* [in] */ JSContextRef context,
744 /* [in] */ JSValueRef nodeObject,
745 /* [retval][out] */ IDOMElement **element);
747 virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerTimeDelay(
748 /* [in] */ double timeDelay);
750 virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerChunkSize(
751 /* [in] */ int chunkSize);
753 virtual HRESULT STDMETHODCALLTYPE backingStore(
754 /* [out, retval] */ OLE_HANDLE* hBitmap);
756 virtual HRESULT STDMETHODCALLTYPE setTransparent(
757 /* [in] */ BOOL transparent);
759 virtual HRESULT STDMETHODCALLTYPE transparent(
760 /* [out, retval] */ BOOL* transparent);
762 virtual HRESULT STDMETHODCALLTYPE setDefersCallbacks(
763 /* [in] */ BOOL defersCallbacks);
765 virtual HRESULT STDMETHODCALLTYPE defersCallbacks(
766 /* [out, retval] */ BOOL* defersCallbacks);
768 virtual HRESULT STDMETHODCALLTYPE globalHistoryItem(
769 /* [out, retval] */ IWebHistoryItem** item);
771 virtual HRESULT STDMETHODCALLTYPE setAlwaysUsesComplexTextCodePath(
772 /* [in] */ BOOL complex);
774 virtual HRESULT STDMETHODCALLTYPE alwaysUsesComplexTextCodePath(
775 /* [out, retval] */ BOOL* complex);
777 virtual HRESULT STDMETHODCALLTYPE setCookieEnabled(
778 /* [in] */ BOOL enable);
780 virtual HRESULT STDMETHODCALLTYPE cookieEnabled(
781 /* [out, retval] */ BOOL* enabled);
783 virtual HRESULT STDMETHODCALLTYPE setMediaVolume(
784 /* [in] */ float volume);
786 virtual HRESULT STDMETHODCALLTYPE mediaVolume(
787 /* [out, retval] */ float* volume);
789 virtual HRESULT STDMETHODCALLTYPE registerEmbeddedViewMIMEType(
790 /* [in] */ BSTR mimeType);
792 virtual HRESULT STDMETHODCALLTYPE setMemoryCacheDelegateCallsEnabled(
793 /* [in] */ BOOL enabled);
795 virtual HRESULT STDMETHODCALLTYPE setJavaScriptURLsAreAllowed(
796 /* [in] */ BOOL areAllowed);
798 virtual HRESULT STDMETHODCALLTYPE setCanStartPlugins(
799 /* [in] */ BOOL canStartPlugins);
801 virtual HRESULT STDMETHODCALLTYPE addUserScriptToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
802 unsigned whitelistCount, BSTR* whitelist,
803 unsigned blacklistCount, BSTR* blacklist,
804 WebUserScriptInjectionTime);
805 virtual HRESULT STDMETHODCALLTYPE addUserStyleSheetToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
806 unsigned whitelistCount, BSTR* whitelist,
807 unsigned blacklistCount, BSTR* blacklist);
808 virtual HRESULT STDMETHODCALLTYPE removeUserScriptFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
809 virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
810 virtual HRESULT STDMETHODCALLTYPE removeUserScriptsFromGroup(BSTR groupName, IWebScriptWorld*);
811 virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetsFromGroup(BSTR groupName, IWebScriptWorld*);
812 virtual HRESULT STDMETHODCALLTYPE removeAllUserContentFromGroup(BSTR groupName);
814 virtual HRESULT STDMETHODCALLTYPE unused1();
815 virtual HRESULT STDMETHODCALLTYPE unused2();
817 virtual HRESULT STDMETHODCALLTYPE invalidateBackingStore(const RECT*);
819 virtual HRESULT STDMETHODCALLTYPE addOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
820 virtual HRESULT STDMETHODCALLTYPE removeOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
821 virtual HRESULT STDMETHODCALLTYPE resetOriginAccessWhitelists();
823 virtual HRESULT STDMETHODCALLTYPE setHistoryDelegate(IWebHistoryDelegate* historyDelegate);
824 virtual HRESULT STDMETHODCALLTYPE historyDelegate(IWebHistoryDelegate** historyDelegate);
825 virtual HRESULT STDMETHODCALLTYPE addVisitedLinks(BSTR* visitedURLs, unsigned visitedURLCount);
827 virtual HRESULT STDMETHODCALLTYPE unused3();
828 virtual HRESULT STDMETHODCALLTYPE unused4();
829 virtual HRESULT STDMETHODCALLTYPE unused5();
831 virtual HRESULT STDMETHODCALLTYPE setGeolocationProvider(IWebGeolocationProvider* locationProvider);
832 virtual HRESULT STDMETHODCALLTYPE geolocationProvider(IWebGeolocationProvider** locationProvider);
833 virtual HRESULT STDMETHODCALLTYPE geolocationDidChangePosition(IWebGeolocationPosition* position);
834 virtual HRESULT STDMETHODCALLTYPE geolocationDidFailWithError(IWebError* error);
836 virtual HRESULT STDMETHODCALLTYPE setDomainRelaxationForbiddenForURLScheme(BOOL forbidden, BSTR scheme);
837 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsSecure(BSTR);
838 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing(BSTR);
839 virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing(BSTR);
841 virtual HRESULT STDMETHODCALLTYPE nextDisplayIsSynchronous();
843 virtual HRESULT STDMETHODCALLTYPE defaultMinimumTimerInterval(
844 /* [retval][out] */ double *interval);
846 virtual HRESULT STDMETHODCALLTYPE setMinimumTimerInterval(
849 virtual HRESULT STDMETHODCALLTYPE httpPipeliningEnabled(
850 /* [out, retval] */ BOOL* enabled);
852 virtual HRESULT STDMETHODCALLTYPE setHTTPPipeliningEnabled(
855 virtual HRESULT STDMETHODCALLTYPE setUsesLayeredWindow(BOOL);
856 virtual HRESULT STDMETHODCALLTYPE usesLayeredWindow(BOOL*);
859 bool shouldUseEmbeddedView(const WTF::String& mimeType) const;
861 WebCore::Page* page();
862 bool handleMouseEvent(UINT, WPARAM, LPARAM);
863 void setMouseActivated(bool flag) { m_mouseActivated = flag; }
864 bool handleContextMenuEvent(WPARAM, LPARAM);
865 bool onMeasureItem(WPARAM, LPARAM);
866 bool onDrawItem(WPARAM, LPARAM);
867 bool onInitMenuPopup(WPARAM, LPARAM);
868 bool onUninitMenuPopup(WPARAM, LPARAM);
869 void performContextMenuAction(WPARAM, LPARAM, bool byPosition);
870 bool mouseWheel(WPARAM, LPARAM, bool isMouseHWheel);
871 bool verticalScroll(WPARAM, LPARAM);
872 bool horizontalScroll(WPARAM, LPARAM);
873 bool gesture(WPARAM, LPARAM);
874 bool gestureNotify(WPARAM, LPARAM);
875 bool execCommand(WPARAM wParam, LPARAM lParam);
876 bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
877 bool keyUp(WPARAM, LPARAM, bool systemKeyDown = false);
878 bool keyPress(WPARAM, LPARAM, bool systemKeyDown = false);
879 void paint(HDC, LPARAM);
880 void paintIntoWindow(HDC bitmapDC, HDC windowDC, const WebCore::IntRect& dirtyRect);
881 bool ensureBackingStore();
882 void addToDirtyRegion(const WebCore::IntRect&);
883 void addToDirtyRegion(HRGN);
884 void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
885 void deleteBackingStore();
886 void repaint(const WebCore::IntRect&, bool contentChanged, bool immediate = false, bool repaintContentOnly = false);
887 void frameRect(RECT* rect);
889 void closeWindowSoon();
890 void closeWindowTimerFired();
891 bool didClose() const { return m_didClose; }
893 bool transparent() const { return m_transparent; }
894 bool usesLayeredWindow() const { return m_usesLayeredWindow; }
896 bool onIMEStartComposition();
897 bool onIMEComposition(LPARAM);
898 bool onIMEEndComposition();
899 bool onIMEChar(WPARAM, LPARAM);
900 bool onIMENotify(WPARAM, LPARAM, LRESULT*);
901 LRESULT onIMERequest(WPARAM, LPARAM);
902 bool onIMESelect(WPARAM, LPARAM);
903 bool onIMESetContext(WPARAM, LPARAM);
904 void selectionChanged();
905 void resetIME(WebCore::Frame*);
906 void setInputMethodState(bool);
908 HRESULT registerDragDrop();
909 HRESULT revokeDragDrop();
911 // Convenient to be able to violate the rules of COM here for easy movement to the frame.
912 WebFrame* topLevelFrame() const { return m_mainFrame; }
913 const WTF::String& userAgentForKURL(const WebCore::KURL& url);
915 static bool canHandleRequest(const WebCore::ResourceRequest&);
917 static WTF::String standardUserAgentWithApplicationName(const WTF::String&);
919 void setIsBeingDestroyed();
920 bool isBeingDestroyed() const { return m_isBeingDestroyed; }
922 const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
923 bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
925 bool isPainting() const { return m_paintCount > 0; }
927 void setToolTip(const WTF::String&);
929 void registerForIconNotification(bool listen);
930 void dispatchDidReceiveIconFromWebFrame(WebFrame*);
932 HRESULT notifyDidAddIcon(IWebNotification*);
933 HRESULT notifyPreferencesChanged(IWebNotification*);
935 static void setCacheModel(WebCacheModel);
936 static WebCacheModel cacheModel();
937 static bool didSetCacheModel();
938 static WebCacheModel maxCacheModelInAnyInstance();
940 void updateActiveStateSoon() const;
941 void deleteBackingStoreSoon();
942 void cancelDeleteBackingStoreSoon();
944 HWND topLevelParent() const { return m_topLevelParent; }
945 HWND viewWindow() const { return m_viewWindow; }
947 void updateActiveState();
949 bool onGetObject(WPARAM, LPARAM, LRESULT&) const;
950 static STDMETHODIMP AccessibleObjectFromWindow(HWND, DWORD objectID, REFIID, void** ppObject);
952 void downloadURL(const WebCore::KURL&);
954 #if USE(ACCELERATED_COMPOSITING)
955 void flushPendingGraphicsLayerChangesSoon();
956 void setRootChildLayer(WebCore::GraphicsLayer*);
959 #if PLATFORM(WIN) && USE(AVFOUNDATION)
960 WebCore::GraphicsDeviceAdapter* graphicsDeviceAdapter() const;
963 void enterFullscreenForNode(WebCore::Node*);
964 void exitFullscreen();
966 void setLastCursor(HCURSOR cursor) { m_lastSetCursor = cursor; }
968 void setGlobalHistoryItem(WebCore::HistoryItem*);
970 #if ENABLE(FULLSCREEN_API)
971 bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) const;
972 bool isFullScreen() const;
973 WebCore::FullScreenController* fullScreenController();
974 void setFullScreenElement(PassRefPtr<WebCore::Element>);
975 WebCore::Element* fullScreenElement() const { return m_fullScreenElement.get(); }
978 bool canShowMIMEType(const String& mimeType);
979 bool canShowMIMETypeAsHTML(const String& mimeType);
981 // Used by TextInputController in DumpRenderTree
983 HRESULT STDMETHODCALLTYPE setCompositionForTesting(
984 /* [in] */ BSTR composition,
985 /* [in] */ UINT from,
986 /* [in] */ UINT length);
988 HRESULT STDMETHODCALLTYPE hasCompositionForTesting(/* [out, retval] */ BOOL* result);
990 HRESULT STDMETHODCALLTYPE confirmCompositionForTesting(/* [in] */ BSTR composition);
992 HRESULT STDMETHODCALLTYPE compositionRangeForTesting(/* [out] */ UINT* startPosition, /* [out] */ UINT* length);
994 HRESULT STDMETHODCALLTYPE firstRectForCharacterRangeForTesting(
995 /* [in] */ UINT location,
996 /* [in] */ UINT length,
997 /* [out, retval] */ RECT* resultRect);
999 HRESULT STDMETHODCALLTYPE selectedRangeForTesting(/* [out] */ UINT* location, /* [out] */ UINT* length);
1001 void setZoomMultiplier(float multiplier, bool isTextOnly);
1002 float zoomMultiplier(bool isTextOnly);
1003 bool canZoomIn(bool isTextOnly);
1004 HRESULT zoomIn(bool isTextOnly);
1005 bool canZoomOut(bool isTextOnly);
1006 HRESULT zoomOut(bool isTextOnly);
1007 bool canResetZoom(bool isTextOnly);
1008 HRESULT resetZoom(bool isTextOnly);
1011 void sizeChanged(const WebCore::IntSize&);
1013 enum WindowsToPaint { PaintWebViewOnly, PaintWebViewAndChildren };
1014 void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect, WindowsToPaint);
1015 void updateBackingStore(WebCore::FrameView*, HDC = 0, bool backingStoreCompletelyDirty = false, WindowsToPaint = PaintWebViewOnly);
1017 void performLayeredWindowUpdate();
1019 WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState) const;
1021 // FIXME: This variable is part of a workaround. The drop effect (pdwEffect) passed to Drop is incorrect.
1022 // We set this variable in DragEnter and DragOver so that it can be used in Drop to set the correct drop effect.
1023 // Thus, on return from DoDragDrop we have the correct pdwEffect for the drag-and-drop operation.
1024 // (see https://bugs.webkit.org/show_bug.cgi?id=29264)
1025 DWORD m_lastDropEffect;
1027 #if USE(ACCELERATED_COMPOSITING)
1028 // GraphicsLayerClient
1029 virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time);
1030 virtual void notifyFlushRequired(const WebCore::GraphicsLayer*);
1031 virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& inClip);
1033 // CACFLayerTreeHostClient
1034 virtual void flushPendingGraphicsLayerChanges();
1037 bool m_shouldInvertColors;
1038 void setShouldInvertColors(bool);
1041 static bool registerWebViewWindowClass();
1042 static LRESULT CALLBACK WebViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
1044 HIMC getIMMContext();
1045 void releaseIMMContext(HIMC);
1046 static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; }
1047 void preflightSpellChecker();
1048 bool continuousCheckingAllowed();
1049 void initializeToolTipWindow();
1050 void prepareCandidateWindow(WebCore::Frame*, HIMC);
1051 void updateSelectionForIME();
1052 LRESULT onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*);
1053 LRESULT onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*);
1054 bool developerExtrasEnabled() const;
1056 bool shouldInitializeTrackPointHack();
1058 // AllWebViewSet functions
1059 void addToAllWebViewsSet();
1060 void removeFromAllWebViewsSet();
1062 virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM);
1064 #if ENABLE(FULLSCREEN_API)
1065 virtual HWND fullScreenClientWindow() const;
1066 virtual HWND fullScreenClientParentWindow() const;
1067 virtual void fullScreenClientSetParentWindow(HWND);
1068 virtual void fullScreenClientWillEnterFullScreen();
1069 virtual void fullScreenClientDidEnterFullScreen();
1070 virtual void fullScreenClientWillExitFullScreen();
1071 virtual void fullScreenClientDidExitFullScreen();
1072 virtual void fullScreenClientForceRepaint();
1073 virtual void fullScreenClientSaveScrollPosition();
1074 virtual void fullScreenClientRestoreScrollPosition();
1078 #if !ASSERT_DISABLED
1079 bool m_deletionHasBegun;
1083 WebFrame* m_mainFrame;
1084 WebCore::Page* m_page;
1085 #if ENABLE(INSPECTOR)
1086 WebInspectorClient* m_inspectorClient;
1087 #endif // ENABLE(INSPECTOR)
1089 RefPtr<RefCountedHBITMAP> m_backingStoreBitmap;
1090 SIZE m_backingStoreSize;
1091 RefPtr<RefCountedHRGN> m_backingStoreDirtyRegion;
1093 COMPtr<IAccessibilityDelegate> m_accessibilityDelegate;
1094 COMPtr<IWebEditingDelegate> m_editingDelegate;
1095 COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate;
1096 COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate;
1097 COMPtr<IWebUIDelegate> m_uiDelegate;
1098 COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate;
1099 COMPtr<IWebFormDelegate> m_formDelegate;
1100 COMPtr<IWebPolicyDelegate> m_policyDelegate;
1101 COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
1102 COMPtr<IWebDownloadDelegate> m_downloadDelegate;
1103 COMPtr<IWebHistoryDelegate> m_historyDelegate;
1104 COMPtr<WebPreferences> m_preferences;
1105 #if ENABLE(INSPECTOR)
1106 COMPtr<WebInspector> m_webInspector;
1107 #endif // ENABLE(INSPECTOR)
1108 COMPtr<IWebGeolocationProvider> m_geolocationProvider;
1110 bool m_userAgentOverridden;
1111 bool m_useBackForwardList;
1112 WTF::String m_userAgentCustom;
1113 WTF::String m_userAgentStandard;
1114 float m_zoomMultiplier;
1115 bool m_zoomsTextOnly;
1116 WTF::String m_overrideEncoding;
1117 WTF::String m_applicationName;
1118 bool m_mouseActivated;
1119 // WebCore dragging logic needs to be able to inspect the drag data
1120 // this is updated in DragEnter/Leave/Drop
1121 COMPtr<IDataObject> m_dragData;
1122 COMPtr<IDropTargetHelper> m_dropTargetHelper;
1123 UChar m_currentCharacterCode;
1124 bool m_isBeingDestroyed;
1125 unsigned m_paintCount;
1126 bool m_hasSpellCheckerDocumentTag;
1128 bool m_hasCustomDropTarget;
1129 unsigned m_inIMEComposition;
1131 WTF::String m_toolTip;
1132 bool m_deleteBackingStoreTimerActive;
1136 static bool s_allowSiteSpecificHacks;
1138 WebCore::SuspendableTimer* m_closeWindowTimer;
1139 OwnPtr<TRACKMOUSEEVENT> m_mouseOutTracker;
1141 HWND m_topLevelParent;
1143 OwnPtr<HashSet<WTF::String> > m_embeddedViewMIMETypes;
1145 //Variables needed to store gesture information
1146 RefPtr<WebCore::Node> m_gestureTargetNode;
1153 OwnPtr<FullscreenVideoController> m_fullScreenVideoController;
1156 #if USE(ACCELERATED_COMPOSITING)
1157 bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; }
1158 void setAcceleratedCompositing(bool);
1160 RefPtr<WebCore::CACFLayerTreeHost> m_layerTreeHost;
1161 OwnPtr<WebCore::GraphicsLayer> m_backingLayer;
1162 bool m_isAcceleratedCompositing;
1165 bool m_nextDisplayIsSynchronous;
1166 bool m_usesLayeredWindow;
1168 HCURSOR m_lastSetCursor;
1170 RefPtr<WebCore::HistoryItem> m_globalHistoryItem;
1172 #if ENABLE(FULLSCREEN_API)
1173 RefPtr<WebCore::Element> m_fullScreenElement;
1174 OwnPtr<WebCore::FullScreenController> m_fullscreenController;
1175 WebCore::IntPoint m_scrollPosition;