--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/win/WebView.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,749 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebView_H
+#define WebView_H
+
+#include "COMPtr.h"
+#include "IWebNotificationObserver.h"
+#include "IWebUIDelegatePrivate.h"
+#include "IWebView.h"
+#include "IWebViewPrivate.h"
+#include "WebFrame.h"
+
+#include <WebCore/IntRect.h>
+#include <WebCore/Timer.h>
+#include <wtf/OwnPtr.h>
+
+class WebFrame;
+class WebBackForwardList;
+class WebInspectorClient;
+
+WebCore::Page* core(IWebView*);
+
+interface IDropTargetHelper;
+
+class WebView
+ : public IWebView
+ , public IWebViewPrivate
+ , public IWebIBActions
+ , public IWebViewCSS
+ , public IWebViewEditing
+ , public IWebViewUndoableEditing
+ , public IWebViewEditingActions
+ , public IWebNotificationObserver
+ , public IDropTarget
+{
+public:
+ static WebView* createInstance();
+protected:
+ WebView();
+ ~WebView();
+
+public:
+ // IUnknown
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
+ virtual ULONG STDMETHODCALLTYPE AddRef(void);
+ virtual ULONG STDMETHODCALLTYPE Release(void);
+
+ // IWebView
+
+ virtual HRESULT STDMETHODCALLTYPE canShowMIMEType(
+ /* [in] */ BSTR mimeType,
+ /* [retval][out] */ BOOL *canShow);
+
+ virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML(
+ /* [in] */ BSTR mimeType,
+ /* [retval][out] */ BOOL *canShow);
+
+ virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML(
+ /* [retval][out] */ IEnumVARIANT **enumVariant);
+
+ virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML(
+ /* [size_is][in] */ BSTR *mimeTypes,
+ /* [in] */ int cMimeTypes);
+
+ virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard(
+ /* [in] */ IDataObject *pasteboard,
+ /* [retval][out] */ BSTR *url);
+
+ virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard(
+ /* [in] */ IDataObject *pasteboard,
+ /* [retval][out] */ BSTR *urlTitle);
+
+ virtual HRESULT STDMETHODCALLTYPE initWithFrame(
+ /* [in] */ RECT frame,
+ /* [in] */ BSTR frameName,
+ /* [in] */ BSTR groupName);
+
+ virtual HRESULT STDMETHODCALLTYPE setUIDelegate(
+ /* [in] */ IWebUIDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE uiDelegate(
+ /* [out][retval] */ IWebUIDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate(
+ /* [in] */ IWebResourceLoadDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate(
+ /* [out][retval] */ IWebResourceLoadDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate(
+ /* [in] */ IWebDownloadDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE downloadDelegate(
+ /* [out][retval] */ IWebDownloadDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate(
+ /* [in] */ IWebFrameLoadDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate(
+ /* [out][retval] */ IWebFrameLoadDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate(
+ /* [in] */ IWebPolicyDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE policyDelegate(
+ /* [out][retval] */ IWebPolicyDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE mainFrame(
+ /* [out][retval] */ IWebFrame **frame);
+
+ virtual HRESULT STDMETHODCALLTYPE focusedFrame(
+ /* [out][retval] */ IWebFrame **frame);
+
+ virtual HRESULT STDMETHODCALLTYPE backForwardList(
+ /* [out][retval] */ IWebBackForwardList **list);
+
+ virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList(
+ /* [in] */ BOOL flag);
+
+ virtual HRESULT STDMETHODCALLTYPE goBack(
+ /* [retval][out] */ BOOL *succeeded);
+
+ virtual HRESULT STDMETHODCALLTYPE goForward(
+ /* [retval][out] */ BOOL *succeeded);
+
+ virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem(
+ /* [in] */ IWebHistoryItem *item,
+ /* [retval][out] */ BOOL *succeeded);
+
+ virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier(
+ /* [in] */ float multiplier);
+
+ virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier(
+ /* [retval][out] */ float *multiplier);
+
+ virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent(
+ /* [in] */ BSTR applicationName);
+
+ virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent(
+ /* [retval][out] */ BSTR *applicationName);
+
+ virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent(
+ /* [in] */ BSTR userAgentString);
+
+ virtual HRESULT STDMETHODCALLTYPE customUserAgent(
+ /* [retval][out] */ BSTR *userAgentString);
+
+ virtual HRESULT STDMETHODCALLTYPE userAgentForURL(
+ /* [in] */ BSTR url,
+ /* [retval][out] */ BSTR *userAgent);
+
+ virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding(
+ /* [retval][out] */ BOOL *supports);
+
+ virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName(
+ /* [in] */ BSTR encodingName);
+
+ virtual HRESULT STDMETHODCALLTYPE customTextEncodingName(
+ /* [retval][out] */ BSTR *encodingName);
+
+ virtual HRESULT STDMETHODCALLTYPE setMediaStyle(
+ /* [in] */ BSTR media);
+
+ virtual HRESULT STDMETHODCALLTYPE mediaStyle(
+ /* [retval][out] */ BSTR *media);
+
+ virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString(
+ /* [in] */ BSTR script,
+ /* [retval][out] */ BSTR *result);
+
+ virtual HRESULT STDMETHODCALLTYPE windowScriptObject(
+ /* [retval][out] */ IWebScriptObject **webScriptObject);
+
+ virtual HRESULT STDMETHODCALLTYPE setPreferences(
+ /* [in] */ IWebPreferences *prefs);
+
+ virtual HRESULT STDMETHODCALLTYPE preferences(
+ /* [retval][out] */ IWebPreferences **prefs);
+
+ virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier(
+ /* [in] */ BSTR anIdentifier);
+
+ virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier(
+ /* [retval][out] */ BSTR *anIdentifier);
+
+ virtual HRESULT STDMETHODCALLTYPE setHostWindow(
+ /* [in] */ OLE_HANDLE window);
+
+ virtual HRESULT STDMETHODCALLTYPE hostWindow(
+ /* [retval][out] */ OLE_HANDLE *window);
+
+ virtual HRESULT STDMETHODCALLTYPE searchFor(
+ /* [in] */ BSTR str,
+ /* [in] */ BOOL forward,
+ /* [in] */ BOOL caseFlag,
+ /* [in] */ BOOL wrapFlag,
+ /* [retval][out] */ BOOL *found);
+
+ virtual HRESULT STDMETHODCALLTYPE registerViewClass(
+ /* [in] */ IWebDocumentView *view,
+ /* [in] */ IWebDocumentRepresentation *representation,
+ /* [in] */ BSTR forMIMEType);
+
+ virtual HRESULT STDMETHODCALLTYPE setGroupName(
+ /* [in] */ BSTR groupName);
+
+ virtual HRESULT STDMETHODCALLTYPE groupName(
+ /* [retval][out] */ BSTR *groupName);
+
+ virtual HRESULT STDMETHODCALLTYPE estimatedProgress(
+ /* [retval][out] */ double *estimatedProgress);
+
+ virtual HRESULT STDMETHODCALLTYPE isLoading(
+ /* [retval][out] */ BOOL *isLoading);
+
+ virtual HRESULT STDMETHODCALLTYPE elementAtPoint(
+ /* [in] */ LPPOINT point,
+ /* [retval][out] */ IPropertyBag **elementDictionary);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection(
+ /* [retval][out] */ IEnumVARIANT **enumVariant);
+
+ virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes(
+ /* [size_is][in] */ BSTR *types,
+ /* [in] */ int cTypes,
+ /* [in] */ IDataObject *pasteboard);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement(
+ /* [in] */ IPropertyBag *elementDictionary,
+ /* [retval][out] */ IEnumVARIANT **enumVariant);
+
+ virtual HRESULT STDMETHODCALLTYPE writeElement(
+ /* [in] */ IPropertyBag *elementDictionary,
+ /* [size_is][in] */ BSTR *withPasteboardTypes,
+ /* [in] */ int cWithPasteboardTypes,
+ /* [in] */ IDataObject *pasteboard);
+
+ virtual HRESULT STDMETHODCALLTYPE selectedText(
+ /* [out, retval] */ BSTR* str);
+
+ virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
+ /* [in] */ IUnknown* sender);
+
+ virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint(
+ /* [in] */ LPPOINT point);
+
+ virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
+
+ virtual HRESULT STDMETHODCALLTYPE setDrawsBackground(
+ /* [in] */ BOOL drawsBackground);
+
+ virtual HRESULT STDMETHODCALLTYPE drawsBackground(
+ /* [retval][out] */ BOOL *drawsBackground);
+
+ virtual HRESULT STDMETHODCALLTYPE setMainFrameURL(
+ /* [in] */ BSTR urlString);
+
+ virtual HRESULT STDMETHODCALLTYPE mainFrameURL(
+ /* [retval][out] */ BSTR *urlString);
+
+ virtual HRESULT STDMETHODCALLTYPE mainFrameDocument(
+ /* [retval][out] */ IDOMDocument **document);
+
+ virtual HRESULT STDMETHODCALLTYPE mainFrameTitle(
+ /* [retval][out] */ BSTR *title);
+
+ virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(
+ /* [retval][out] */ OLE_HANDLE *hBitmap);
+
+ // IWebIBActions
+
+ virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE stopLoading(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE reload(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE canGoBack(
+ /* [in] */ IUnknown *sender,
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE goBack(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE canGoForward(
+ /* [in] */ IUnknown *sender,
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE goForward(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger(
+ /* [in] */ IUnknown *sender,
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE makeTextLarger(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller(
+ /* [in] */ IUnknown *sender,
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE makeTextSmaller(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize(
+ /* [in] */ IUnknown *sender,
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking(
+ /* [in] */ IUnknown *sender);
+
+ // IWebViewCSS
+
+ virtual HRESULT STDMETHODCALLTYPE computedStyleForElement(
+ /* [in] */ IDOMElement *element,
+ /* [in] */ BSTR pseudoElement,
+ /* [retval][out] */ IDOMCSSStyleDeclaration **style);
+
+ // IWebViewEditing
+
+ virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint(
+ /* [in] */ LPPOINT point,
+ /* [retval][out] */ IDOMRange **range);
+
+ virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange(
+ /* [in] */ IDOMRange *range,
+ /* [in] */ WebSelectionAffinity affinity);
+
+ virtual HRESULT STDMETHODCALLTYPE selectedDOMRange(
+ /* [retval][out] */ IDOMRange **range);
+
+ virtual HRESULT STDMETHODCALLTYPE selectionAffinity(
+ /* [retval][out][retval][out] */ WebSelectionAffinity *affinity);
+
+ virtual HRESULT STDMETHODCALLTYPE setEditable(
+ /* [in] */ BOOL flag);
+
+ virtual HRESULT STDMETHODCALLTYPE isEditable(
+ /* [retval][out] */ BOOL *isEditable);
+
+ virtual HRESULT STDMETHODCALLTYPE setTypingStyle(
+ /* [in] */ IDOMCSSStyleDeclaration *style);
+
+ virtual HRESULT STDMETHODCALLTYPE typingStyle(
+ /* [retval][out] */ IDOMCSSStyleDeclaration **style);
+
+ virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled(
+ /* [in] */ BOOL flag);
+
+ virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled(
+ /* [in] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
+ /* [in] */ BOOL flag);
+
+ virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag(
+ /* [retval][out] */ int *tag);
+
+ virtual HRESULT STDMETHODCALLTYPE undoManager(
+ /* [retval][out] */ IWebUndoManager **manager);
+
+ virtual HRESULT STDMETHODCALLTYPE setEditingDelegate(
+ /* [in] */ IWebEditingDelegate *d);
+
+ virtual HRESULT STDMETHODCALLTYPE editingDelegate(
+ /* [retval][out] */ IWebEditingDelegate **d);
+
+ virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText(
+ /* [in] */ BSTR text,
+ /* [retval][out] */ IDOMCSSStyleDeclaration **style);
+
+ virtual HRESULT STDMETHODCALLTYPE hasSelectedRange(
+ /* [retval][out] */ BOOL *hasSelectedRange);
+
+ virtual HRESULT STDMETHODCALLTYPE cutEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE copyEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE deleteEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE editingEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled(
+ /* [retval][out] */ BOOL *enabled);
+
+ virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
+ BOOL enabled);
+
+ // IWebViewUndoableEditing
+
+ virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode(
+ /* [in] */ IDOMNode *node);
+
+ virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText(
+ /* [in] */ BSTR text);
+
+ virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString(
+ /* [in] */ BSTR markupString);
+
+ virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive(
+ /* [in] */ IWebArchive *archive);
+
+ virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
+
+ virtual HRESULT STDMETHODCALLTYPE clearSelection(void);
+
+ virtual HRESULT STDMETHODCALLTYPE applyStyle(
+ /* [in] */ IDOMCSSStyleDeclaration *style);
+
+ // IWebViewEditingActions
+
+ virtual HRESULT STDMETHODCALLTYPE copy(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE cut(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE paste(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE copyURL(
+ /* [in] */ BSTR url);
+
+ virtual HRESULT STDMETHODCALLTYPE copyFont(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteFont(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE delete_(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE pasteAsRichText(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE changeFont(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE changeAttributes(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE changeColor(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE alignCenter(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE alignJustified(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE alignLeft(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE alignRight(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE checkSpelling(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE showGuessPanel(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE performFindPanelAction(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE startSpeaking(
+ /* [in] */ IUnknown *sender);
+
+ virtual HRESULT STDMETHODCALLTYPE stopSpeaking(
+ /* [in] */ IUnknown *sender);
+
+ // IWebNotificationObserver
+
+ virtual HRESULT STDMETHODCALLTYPE onNotify(
+ /* [in] */ IWebNotification *notification);
+
+ // IWebViewPrivate
+ virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
+ /* [in] */ IDropTarget* dt);
+
+ virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
+
+ virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode(
+ /* [in] */ BOOL flag);
+
+ virtual HRESULT STDMETHODCALLTYPE inViewSourceMode(
+ /* [retval][out] */ BOOL* flag);
+
+ virtual HRESULT STDMETHODCALLTYPE viewWindow(
+ /* [retval][out] */ OLE_HANDLE *window);
+
+ virtual HRESULT STDMETHODCALLTYPE setFormDelegate(
+ /* [in] */ IWebFormDelegate *formDelegate);
+
+ virtual HRESULT STDMETHODCALLTYPE formDelegate(
+ /* [retval][out] */ IWebFormDelegate **formDelegate);
+
+ virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate(
+ /* [in] */ IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
+
+ virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate(
+ /* [retval][out] */ IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
+
+ virtual HRESULT STDMETHODCALLTYPE scrollOffset(
+ /* [retval][out] */ LPPOINT offset);
+
+ virtual HRESULT STDMETHODCALLTYPE scrollBy(
+ /* [in] */ LPPOINT offset);
+
+ virtual HRESULT STDMETHODCALLTYPE visibleContentRect(
+ /* [retval][out] */ LPRECT rect);
+
+ virtual HRESULT STDMETHODCALLTYPE updateActiveState(void);
+
+ virtual HRESULT STDMETHODCALLTYPE markAllMatchesForText(
+ BSTR search, BOOL caseSensitive, BOOL highlight, UINT limit, UINT* matches);
+
+ virtual HRESULT STDMETHODCALLTYPE unmarkAllTextMatches();
+
+ virtual HRESULT STDMETHODCALLTYPE rectsForTextMatches(
+ IEnumTextMatches** pmatches);
+
+ virtual HRESULT STDMETHODCALLTYPE generateSelectionImage(
+ BOOL forceWhiteText, OLE_HANDLE* hBitmap);
+
+ virtual HRESULT STDMETHODCALLTYPE selectionImageRect(
+ RECT* rc);
+
+ virtual HRESULT STDMETHODCALLTYPE DragEnter(
+ IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
+
+ virtual HRESULT STDMETHODCALLTYPE DragOver(
+ DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
+
+ virtual HRESULT STDMETHODCALLTYPE DragLeave();
+
+ virtual HRESULT STDMETHODCALLTYPE Drop(
+ IDataObject* pDataObject, DWORD grfKeyState, POINTL pt, DWORD* pdwEffect);
+
+ virtual HRESULT STDMETHODCALLTYPE canHandleRequest(
+ IWebURLRequest *request,
+ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
+
+ virtual HRESULT STDMETHODCALLTYPE setInitialFocus(
+ /* [in] */ BOOL forward);
+
+ virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements(
+ /* [in] */ BOOL cycles);
+
+ virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements(
+ /* [retval][out] */ BOOL *result);
+
+ virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
+ /* [in] */ BOOL allows);
+
+ virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginPath(
+ /* [in] */ BSTR path);
+
+ virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView(
+ /* [in] */ IWebView *otherView);
+
+ // WebView
+ WebCore::Page* page();
+ bool handleMouseEvent(UINT, WPARAM, LPARAM);
+ void setMouseActivated(bool flag) { m_mouseActivated = flag; }
+ bool handleContextMenuEvent(WPARAM, LPARAM);
+ bool onMeasureItem(WPARAM, LPARAM);
+ bool onDrawItem(WPARAM, LPARAM);
+ bool onInitMenuPopup(WPARAM, LPARAM);
+ bool onUninitMenuPopup(WPARAM, LPARAM);
+ void performContextMenuAction(WPARAM, LPARAM, bool byPosition);
+ bool mouseWheel(WPARAM, LPARAM, bool isHorizontal);
+ bool execCommand(WPARAM wParam, LPARAM lParam);
+ bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
+ bool keyUp(WPARAM, LPARAM);
+ HRESULT updateWebCoreSettingsFromPreferences(IWebPreferences* preferences);
+ bool inResizer(LPARAM lParam);
+ void paint(HDC, LPARAM);
+ void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, LPRECT dirtyRect);
+ void paintIntoWindow(HDC bitmapDC, HDC windowDC, LPRECT dirtyRect);
+ bool ensureBackingStore();
+ void addToDirtyRegion(const WebCore::IntRect&);
+ void addToDirtyRegion(HRGN);
+ void scrollBackingStore(WebCore::FrameView*, int dx, int dy, const WebCore::IntRect& scrollViewRect, const WebCore::IntRect& clipRect);
+ void updateBackingStore(WebCore::FrameView*, HDC, bool backingStoreCompletelyDirty);
+ void deleteBackingStore();
+ void frameRect(RECT* rect);
+ void closeWindow();
+ void closeWindowSoon();
+ void close();
+ bool didClose() const { return m_didClose; }
+ void setProhibitsMainFrameScrolling(bool = true);
+
+ bool onIMEStartComposition();
+ bool onIMEComposition(LPARAM);
+ bool onIMEEndComposition();
+ bool onIMEChar(WPARAM, LPARAM);
+ bool onIMENotify(WPARAM, LPARAM, LRESULT*);
+ bool onIMERequest(WPARAM, LPARAM, LRESULT*);
+ bool onIMESelect(WPARAM, LPARAM);
+ bool onIMESetContext(WPARAM, LPARAM);
+ void selectionChanged();
+ void resetIME(WebCore::Frame*);
+ bool inIMEKeyDown() const { return m_inIMEKeyDown; }
+ void setInputMethodState(bool);
+
+ HRESULT registerDragDrop();
+ HRESULT revokeDragDrop();
+
+ // Convenient to be able to violate the rules of COM here for easy movement to the frame.
+ WebFrame* topLevelFrame() { return m_mainFrame; }
+ const WebCore::String& userAgentForKURL(const WebCore::KURL& url);
+
+ static bool canHandleRequest(const WebCore::ResourceRequest&);
+
+ void setIsBeingDestroyed() { m_isBeingDestroyed = true; }
+ bool isBeingDestroyed() const { return m_isBeingDestroyed; }
+
+ const char* interpretKeyEvent(const WebCore::KeyboardEvent*);
+ bool handleEditingKeyboardEvent(WebCore::KeyboardEvent*);
+
+ bool isPainting() const { return m_paintCount > 0; }
+
+ void setToolTip(const WebCore::String&);
+
+ void registerForIconNotification(bool listen);
+ HRESULT notifyDidAddIcon(IWebNotification*);
+ void dispatchDidReceiveIconFromWebFrame(WebFrame*);
+
+protected:
+ HIMC getIMMContext();
+ void releaseIMMContext(HIMC);
+ static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; }
+ void preflightSpellChecker();
+ bool continuousCheckingAllowed();
+ void initializeCacheSizesIfNecessary();
+ void initializeToolTipWindow();
+ void closeWindowTimerFired(WebCore::Timer<WebView>*);
+ void prepareCandidateWindow(WebCore::Frame*, HIMC);
+ void updateSelectionForIME();
+ bool onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*, LRESULT*);
+ bool onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*, LRESULT*);
+ bool developerExtrasEnabled() const;
+
+ ULONG m_refCount;
+ WebCore::String m_groupName;
+ HWND m_hostWindow;
+ HWND m_viewWindow;
+ WebFrame* m_mainFrame;
+ WebCore::Page* m_page;
+
+ OwnPtr<HBITMAP> m_backingStoreBitmap;
+ SIZE m_backingStoreSize;
+ OwnPtr<HRGN> m_backingStoreDirtyRegion;
+
+ COMPtr<IWebEditingDelegate> m_editingDelegate;
+ COMPtr<IWebFrameLoadDelegate> m_frameLoadDelegate;
+ COMPtr<IWebFrameLoadDelegatePrivate> m_frameLoadDelegatePrivate;
+ COMPtr<IWebUIDelegate> m_uiDelegate;
+ COMPtr<IWebUIDelegatePrivate> m_uiDelegatePrivate;
+ COMPtr<IWebFormDelegate> m_formDelegate;
+ COMPtr<IWebPolicyDelegate> m_policyDelegate;
+ COMPtr<IWebPreferences> m_preferences;
+ COMPtr<IWebResourceLoadDelegate> m_resourceLoadDelegate;
+ COMPtr<IWebDownloadDelegate> m_downloadDelegate;
+ bool m_userAgentOverridden;
+ bool m_useBackForwardList;
+ WebCore::String m_userAgentCustom;
+ WebCore::String m_userAgentStandard;
+ float m_textSizeMultiplier;
+ WebCore::String m_overrideEncoding;
+ WebCore::String m_applicationName;
+ bool m_mouseActivated;
+ // WebCore dragging logic needs to be able to inspect the drag data
+ // this is updated in DragEnter/Leave/Drop
+ COMPtr<IDataObject> m_dragData;
+ COMPtr<IDropTargetHelper> m_dropTargetHelper;
+ UChar m_currentCharacterCode;
+ bool m_isBeingDestroyed;
+ unsigned m_paintCount;
+ bool m_hasSpellCheckerDocumentTag;
+ bool m_smartInsertDeleteEnabled;
+ bool m_didClose;
+ bool m_hasCustomDropTarget;
+ unsigned m_inIMEComposition;
+ bool m_inIMEKeyDown;
+ HWND m_toolTipHwnd;
+ WebCore::String m_toolTip;
+
+ static bool s_allowSiteSpecificHacks;
+
+ WebCore::Timer<WebView> m_closeWindowTimer;
+};
+
+#endif