#ifndef WebView_H
#define WebView_H
#include "COMPtr.h"
#include "WebKit.h"
#include "WebFrame.h"
#include "WebPreferences.h"
#include <WebCore/IntRect.h>
#include <WebCore/Timer.h>
#include <WebCore/WindowMessageListener.h>
#include <wtf/HashSet.h>
#include <wtf/OwnPtr.h>
class WebFrame;
class WebBackForwardList;
class WebInspector;
class WebInspectorClient;
WebView* kit(WebCore::Page*);
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
, WebCore::WindowMessageListener
{
public:
static WebView* createInstance();
protected:
WebView();
~WebView();
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
virtual ULONG STDMETHODCALLTYPE AddRef(void);
virtual ULONG STDMETHODCALLTYPE Release(void);
virtual HRESULT STDMETHODCALLTYPE canShowMIMEType(
BSTR mimeType,
BOOL *canShow);
virtual HRESULT STDMETHODCALLTYPE canShowMIMETypeAsHTML(
BSTR mimeType,
BOOL *canShow);
virtual HRESULT STDMETHODCALLTYPE MIMETypesShownAsHTML(
IEnumVARIANT **enumVariant);
virtual HRESULT STDMETHODCALLTYPE setMIMETypesShownAsHTML(
BSTR *mimeTypes,
int cMimeTypes);
virtual HRESULT STDMETHODCALLTYPE URLFromPasteboard(
IDataObject *pasteboard,
BSTR *url);
virtual HRESULT STDMETHODCALLTYPE URLTitleFromPasteboard(
IDataObject *pasteboard,
BSTR *urlTitle);
virtual HRESULT STDMETHODCALLTYPE initWithFrame(
RECT frame,
BSTR frameName,
BSTR groupName);
virtual HRESULT STDMETHODCALLTYPE setUIDelegate(
IWebUIDelegate *d);
virtual HRESULT STDMETHODCALLTYPE uiDelegate(
IWebUIDelegate **d);
virtual HRESULT STDMETHODCALLTYPE setResourceLoadDelegate(
IWebResourceLoadDelegate *d);
virtual HRESULT STDMETHODCALLTYPE resourceLoadDelegate(
IWebResourceLoadDelegate **d);
virtual HRESULT STDMETHODCALLTYPE setDownloadDelegate(
IWebDownloadDelegate *d);
virtual HRESULT STDMETHODCALLTYPE downloadDelegate(
IWebDownloadDelegate **d);
virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegate(
IWebFrameLoadDelegate *d);
virtual HRESULT STDMETHODCALLTYPE frameLoadDelegate(
IWebFrameLoadDelegate **d);
virtual HRESULT STDMETHODCALLTYPE setPolicyDelegate(
IWebPolicyDelegate *d);
virtual HRESULT STDMETHODCALLTYPE policyDelegate(
IWebPolicyDelegate **d);
virtual HRESULT STDMETHODCALLTYPE mainFrame(
IWebFrame **frame);
virtual HRESULT STDMETHODCALLTYPE focusedFrame(
IWebFrame **frame);
virtual HRESULT STDMETHODCALLTYPE backForwardList(
IWebBackForwardList **list);
virtual HRESULT STDMETHODCALLTYPE setMaintainsBackForwardList(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE goBack(
BOOL *succeeded);
virtual HRESULT STDMETHODCALLTYPE goForward(
BOOL *succeeded);
virtual HRESULT STDMETHODCALLTYPE goToBackForwardItem(
IWebHistoryItem *item,
BOOL *succeeded);
virtual HRESULT STDMETHODCALLTYPE setTextSizeMultiplier(
float multiplier);
virtual HRESULT STDMETHODCALLTYPE textSizeMultiplier(
float *multiplier);
virtual HRESULT STDMETHODCALLTYPE setApplicationNameForUserAgent(
BSTR applicationName);
virtual HRESULT STDMETHODCALLTYPE applicationNameForUserAgent(
BSTR *applicationName);
virtual HRESULT STDMETHODCALLTYPE setCustomUserAgent(
BSTR userAgentString);
virtual HRESULT STDMETHODCALLTYPE customUserAgent(
BSTR *userAgentString);
virtual HRESULT STDMETHODCALLTYPE userAgentForURL(
BSTR url,
BSTR *userAgent);
virtual HRESULT STDMETHODCALLTYPE supportsTextEncoding(
BOOL *supports);
virtual HRESULT STDMETHODCALLTYPE setCustomTextEncodingName(
BSTR encodingName);
virtual HRESULT STDMETHODCALLTYPE customTextEncodingName(
BSTR *encodingName);
virtual HRESULT STDMETHODCALLTYPE setMediaStyle(
BSTR media);
virtual HRESULT STDMETHODCALLTYPE mediaStyle(
BSTR *media);
virtual HRESULT STDMETHODCALLTYPE stringByEvaluatingJavaScriptFromString(
BSTR script,
BSTR *result);
virtual HRESULT STDMETHODCALLTYPE windowScriptObject(
IWebScriptObject **webScriptObject);
virtual HRESULT STDMETHODCALLTYPE setPreferences(
IWebPreferences *prefs);
virtual HRESULT STDMETHODCALLTYPE preferences(
IWebPreferences **prefs);
virtual HRESULT STDMETHODCALLTYPE setPreferencesIdentifier(
BSTR anIdentifier);
virtual HRESULT STDMETHODCALLTYPE preferencesIdentifier(
BSTR *anIdentifier);
virtual HRESULT STDMETHODCALLTYPE setHostWindow(
OLE_HANDLE window);
virtual HRESULT STDMETHODCALLTYPE hostWindow(
OLE_HANDLE *window);
virtual HRESULT STDMETHODCALLTYPE searchFor(
BSTR str,
BOOL forward,
BOOL caseFlag,
BOOL wrapFlag,
BOOL *found);
virtual HRESULT STDMETHODCALLTYPE registerViewClass(
IWebDocumentView *view,
IWebDocumentRepresentation *representation,
BSTR forMIMEType);
virtual HRESULT STDMETHODCALLTYPE setGroupName(
BSTR groupName);
virtual HRESULT STDMETHODCALLTYPE groupName(
BSTR *groupName);
virtual HRESULT STDMETHODCALLTYPE estimatedProgress(
double *estimatedProgress);
virtual HRESULT STDMETHODCALLTYPE isLoading(
BOOL *isLoading);
virtual HRESULT STDMETHODCALLTYPE elementAtPoint(
LPPOINT point,
IPropertyBag **elementDictionary);
virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForSelection(
IEnumVARIANT **enumVariant);
virtual HRESULT STDMETHODCALLTYPE writeSelectionWithPasteboardTypes(
BSTR *types,
int cTypes,
IDataObject *pasteboard);
virtual HRESULT STDMETHODCALLTYPE pasteboardTypesForElement(
IPropertyBag *elementDictionary,
IEnumVARIANT **enumVariant);
virtual HRESULT STDMETHODCALLTYPE writeElement(
IPropertyBag *elementDictionary,
BSTR *withPasteboardTypes,
int cWithPasteboardTypes,
IDataObject *pasteboard);
virtual HRESULT STDMETHODCALLTYPE selectedText(
BSTR* str);
virtual HRESULT STDMETHODCALLTYPE centerSelectionInVisibleArea(
IUnknown* sender);
virtual HRESULT STDMETHODCALLTYPE moveDragCaretToPoint(
LPPOINT point);
virtual HRESULT STDMETHODCALLTYPE removeDragCaret( void);
virtual HRESULT STDMETHODCALLTYPE setDrawsBackground(
BOOL drawsBackground);
virtual HRESULT STDMETHODCALLTYPE drawsBackground(
BOOL *drawsBackground);
virtual HRESULT STDMETHODCALLTYPE setMainFrameURL(
BSTR urlString);
virtual HRESULT STDMETHODCALLTYPE mainFrameURL(
BSTR *urlString);
virtual HRESULT STDMETHODCALLTYPE mainFrameDocument(
IDOMDocument **document);
virtual HRESULT STDMETHODCALLTYPE mainFrameTitle(
BSTR *title);
virtual HRESULT STDMETHODCALLTYPE mainFrameIcon(
OLE_HANDLE *hBitmap);
virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsLocal(
BSTR scheme);
virtual HRESULT STDMETHODCALLTYPE close();
virtual HRESULT STDMETHODCALLTYPE takeStringURLFrom(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE stopLoading(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE reload(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canGoBack(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE goBack(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canGoForward(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE goForward(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canMakeTextLarger(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE makeTextLarger(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canMakeTextSmaller(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE makeTextSmaller(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canMakeTextStandardSize(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE makeTextStandardSize(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE toggleContinuousSpellChecking(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE toggleSmartInsertDelete(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE toggleGrammarChecking(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE computedStyleForElement(
IDOMElement *element,
BSTR pseudoElement,
IDOMCSSStyleDeclaration **style);
virtual HRESULT STDMETHODCALLTYPE editableDOMRangeForPoint(
LPPOINT point,
IDOMRange **range);
virtual HRESULT STDMETHODCALLTYPE setSelectedDOMRange(
IDOMRange *range,
WebSelectionAffinity affinity);
virtual HRESULT STDMETHODCALLTYPE selectedDOMRange(
IDOMRange **range);
virtual HRESULT STDMETHODCALLTYPE selectionAffinity(
WebSelectionAffinity *affinity);
virtual HRESULT STDMETHODCALLTYPE setEditable(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE isEditable(
BOOL *isEditable);
virtual HRESULT STDMETHODCALLTYPE setTypingStyle(
IDOMCSSStyleDeclaration *style);
virtual HRESULT STDMETHODCALLTYPE typingStyle(
IDOMCSSStyleDeclaration **style);
virtual HRESULT STDMETHODCALLTYPE setSmartInsertDeleteEnabled(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE smartInsertDeleteEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE setSelectTrailingWhitespaceEnabled(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE isSelectTrailingWhitespaceEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE setContinuousSpellCheckingEnabled(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE isContinuousSpellCheckingEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE spellCheckerDocumentTag(
int *tag);
virtual HRESULT STDMETHODCALLTYPE undoManager(
IWebUndoManager **manager);
virtual HRESULT STDMETHODCALLTYPE setEditingDelegate(
IWebEditingDelegate *d);
virtual HRESULT STDMETHODCALLTYPE editingDelegate(
IWebEditingDelegate **d);
virtual HRESULT STDMETHODCALLTYPE styleDeclarationWithText(
BSTR text,
IDOMCSSStyleDeclaration **style);
virtual HRESULT STDMETHODCALLTYPE hasSelectedRange(
BOOL *hasSelectedRange);
virtual HRESULT STDMETHODCALLTYPE cutEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE copyEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE pasteEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE deleteEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE editingEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE isGrammarCheckingEnabled(
BOOL *enabled);
virtual HRESULT STDMETHODCALLTYPE setGrammarCheckingEnabled(
BOOL enabled);
virtual HRESULT STDMETHODCALLTYPE setPageSizeMultiplier(
float multiplier);
virtual HRESULT STDMETHODCALLTYPE pageSizeMultiplier(
float *multiplier);
virtual HRESULT STDMETHODCALLTYPE canZoomPageIn(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE zoomPageIn(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canZoomPageOut(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE zoomPageOut(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE canResetPageZoom(
IUnknown *sender,
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE resetPageZoom(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithNode(
IDOMNode *node);
virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithText(
BSTR text);
virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithMarkupString(
BSTR markupString);
virtual HRESULT STDMETHODCALLTYPE replaceSelectionWithArchive(
IWebArchive *archive);
virtual HRESULT STDMETHODCALLTYPE deleteSelection( void);
virtual HRESULT STDMETHODCALLTYPE clearSelection(void);
virtual HRESULT STDMETHODCALLTYPE applyStyle(
IDOMCSSStyleDeclaration *style);
virtual HRESULT STDMETHODCALLTYPE copy(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE cut(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE paste(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE copyURL(
BSTR url);
virtual HRESULT STDMETHODCALLTYPE copyFont(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE pasteFont(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE delete_(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE pasteAsPlainText(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE pasteAsRichText(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE changeFont(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE changeAttributes(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE changeDocumentBackgroundColor(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE changeColor(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE alignCenter(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE alignJustified(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE alignLeft(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE alignRight(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE checkSpelling(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE showGuessPanel(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE performFindPanelAction(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE startSpeaking(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE stopSpeaking(
IUnknown *sender);
virtual HRESULT STDMETHODCALLTYPE onNotify(
IWebNotification *notification);
virtual HRESULT STDMETHODCALLTYPE setCustomDropTarget(
IDropTarget* dt);
virtual HRESULT STDMETHODCALLTYPE removeCustomDropTarget();
virtual HRESULT STDMETHODCALLTYPE setInViewSourceMode(
BOOL flag);
virtual HRESULT STDMETHODCALLTYPE inViewSourceMode(
BOOL* flag);
virtual HRESULT STDMETHODCALLTYPE viewWindow(
OLE_HANDLE *window);
virtual HRESULT STDMETHODCALLTYPE setFormDelegate(
IWebFormDelegate *formDelegate);
virtual HRESULT STDMETHODCALLTYPE formDelegate(
IWebFormDelegate **formDelegate);
virtual HRESULT STDMETHODCALLTYPE setFrameLoadDelegatePrivate(
IWebFrameLoadDelegatePrivate *frameLoadDelegatePrivate);
virtual HRESULT STDMETHODCALLTYPE frameLoadDelegatePrivate(
IWebFrameLoadDelegatePrivate **frameLoadDelegatePrivate);
virtual HRESULT STDMETHODCALLTYPE scrollOffset(
LPPOINT offset);
virtual HRESULT STDMETHODCALLTYPE scrollBy(
LPPOINT offset);
virtual HRESULT STDMETHODCALLTYPE visibleContentRect(
LPRECT rect);
virtual HRESULT STDMETHODCALLTYPE updateFocusedAndActiveState();
virtual HRESULT STDMETHODCALLTYPE executeCoreCommandByName(BSTR name, BSTR value);
virtual HRESULT STDMETHODCALLTYPE clearMainFrameName();
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 selectionRect(
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 standardUserAgentWithApplicationName(
BSTR applicationName,
BSTR *groupName);
virtual HRESULT STDMETHODCALLTYPE clearFocusNode();
virtual HRESULT STDMETHODCALLTYPE setInitialFocus(
BOOL forward);
virtual HRESULT STDMETHODCALLTYPE setTabKeyCyclesThroughElements(
BOOL cycles);
virtual HRESULT STDMETHODCALLTYPE tabKeyCyclesThroughElements(
BOOL *result);
virtual HRESULT STDMETHODCALLTYPE setAllowSiteSpecificHacks(
BOOL allows);
virtual HRESULT STDMETHODCALLTYPE addAdditionalPluginDirectory(
BSTR directory);
virtual HRESULT STDMETHODCALLTYPE loadBackForwardListFromOtherView(
IWebView *otherView);
virtual HRESULT STDMETHODCALLTYPE inspector(
IWebInspector**);
virtual HRESULT STDMETHODCALLTYPE clearUndoRedoOperations( void);
virtual HRESULT STDMETHODCALLTYPE shouldClose(
BOOL* result);
virtual HRESULT STDMETHODCALLTYPE setProhibitsMainFrameScrolling(BOOL);
virtual HRESULT STDMETHODCALLTYPE setShouldApplyMacFontAscentHack(BOOL);
virtual HRESULT STDMETHODCALLTYPE windowAncestryDidChange();
virtual HRESULT STDMETHODCALLTYPE paintDocumentRectToContext(
RECT rect,
OLE_HANDLE dc);
virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerTimeDelay(
double timeDelay);
virtual HRESULT STDMETHODCALLTYPE setCustomHTMLTokenizerChunkSize(
int chunkSize);
virtual HRESULT STDMETHODCALLTYPE backingStore(
OLE_HANDLE* hBitmap);
virtual HRESULT STDMETHODCALLTYPE setTransparent(
BOOL transparent);
virtual HRESULT STDMETHODCALLTYPE transparent(
BOOL* transparent);
virtual HRESULT STDMETHODCALLTYPE setDefersCallbacks(
BOOL defersCallbacks);
virtual HRESULT STDMETHODCALLTYPE defersCallbacks(
BOOL* defersCallbacks);
virtual HRESULT STDMETHODCALLTYPE globalHistoryItem(
IWebHistoryItem** item);
virtual HRESULT STDMETHODCALLTYPE setAlwaysUsesComplexTextCodePath(
BOOL complex);
virtual HRESULT STDMETHODCALLTYPE alwaysUsesComplexTextCodePath(
BOOL* complex);
virtual HRESULT STDMETHODCALLTYPE setCookieEnabled(
BOOL enable);
virtual HRESULT STDMETHODCALLTYPE cookieEnabled(
BOOL* enabled);
virtual HRESULT STDMETHODCALLTYPE setMediaVolume(
float volume);
virtual HRESULT STDMETHODCALLTYPE mediaVolume(
float* volume);
virtual HRESULT STDMETHODCALLTYPE registerEmbeddedViewMIMEType(
BSTR mimeType);
virtual HRESULT STDMETHODCALLTYPE setMemoryCacheDelegateCallsEnabled(
BOOL enabled);
virtual HRESULT STDMETHODCALLTYPE setJavaScriptURLsAreAllowed(
BOOL areAllowed);
bool shouldUseEmbeddedView(const WebCore::String& mimeType) const;
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 isMouseHWheel);
bool gesture(WPARAM, LPARAM);
bool gestureNotify(WPARAM, LPARAM);
bool execCommand(WPARAM wParam, LPARAM lParam);
bool keyDown(WPARAM, LPARAM, bool systemKeyDown = false);
bool keyUp(WPARAM, LPARAM, bool systemKeyDown = false);
bool keyPress(WPARAM, LPARAM, bool systemKeyDown = false);
bool inResizer(LPARAM lParam);
void paint(HDC, LPARAM);
void paintIntoWindow(HDC bitmapDC, HDC windowDC, const WebCore::IntRect& 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 deleteBackingStore();
void repaint(const WebCore::IntRect&, bool contentChanged, bool immediate = false, bool repaintContentOnly = false);
void frameRect(RECT* rect);
void closeWindow();
void closeWindowSoon();
bool didClose() const { return m_didClose; }
bool transparent() const { return m_transparent; }
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*);
void setInputMethodState(bool);
HRESULT registerDragDrop();
HRESULT revokeDragDrop();
WebFrame* topLevelFrame() const { return m_mainFrame; }
const WebCore::String& userAgentForKURL(const WebCore::KURL& url);
static bool canHandleRequest(const WebCore::ResourceRequest&);
static WebCore::String standardUserAgentWithApplicationName(const WebCore::String&);
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);
void dispatchDidReceiveIconFromWebFrame(WebFrame*);
HRESULT notifyDidAddIcon(IWebNotification*);
HRESULT notifyPreferencesChanged(IWebNotification*);
static void setCacheModel(WebCacheModel);
static WebCacheModel cacheModel();
static bool didSetCacheModel();
static WebCacheModel maxCacheModelInAnyInstance();
void updateActiveStateSoon() const;
void deleteBackingStoreSoon();
void cancelDeleteBackingStoreSoon();
HWND topLevelParent() const { return m_topLevelParent; }
void updateActiveState();
bool onGetObject(WPARAM, LPARAM, LRESULT&) const;
static STDMETHODIMP AccessibleObjectFromWindow(HWND, DWORD objectID, REFIID, void** ppObject);
void downloadURL(const WebCore::KURL&);
private:
void setZoomMultiplier(float multiplier, bool isTextOnly);
float zoomMultiplier(bool isTextOnly);
bool canZoomIn(bool isTextOnly);
HRESULT zoomIn(bool isTextOnly);
bool canZoomOut(bool isTextOnly);
HRESULT zoomOut(bool isTextOnly);
bool canResetZoom(bool isTextOnly);
HRESULT resetZoom(bool isTextOnly);
bool active();
enum WindowsToPaint { PaintWebViewOnly, PaintWebViewAndChildren };
void paintIntoBackingStore(WebCore::FrameView*, HDC bitmapDC, const WebCore::IntRect& dirtyRect, WindowsToPaint);
void updateBackingStore(WebCore::FrameView*, HDC = 0, bool backingStoreCompletelyDirty = false, WindowsToPaint = PaintWebViewOnly);
protected:
HIMC getIMMContext();
void releaseIMMContext(HIMC);
static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; }
void preflightSpellChecker();
bool continuousCheckingAllowed();
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;
void addToAllWebViewsSet();
void removeFromAllWebViewsSet();
virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM);
ULONG m_refCount;
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<IWebResourceLoadDelegate> m_resourceLoadDelegate;
COMPtr<IWebDownloadDelegate> m_downloadDelegate;
COMPtr<WebPreferences> m_preferences;
COMPtr<WebInspector> m_webInspector;
bool m_userAgentOverridden;
bool m_useBackForwardList;
WebCore::String m_userAgentCustom;
WebCore::String m_userAgentStandard;
float m_zoomMultiplier;
WebCore::String m_overrideEncoding;
WebCore::String m_applicationName;
bool m_mouseActivated;
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_selectTrailingWhitespaceEnabled;
bool m_didClose;
bool m_hasCustomDropTarget;
unsigned m_inIMEComposition;
HWND m_toolTipHwnd;
WebCore::String m_toolTip;
bool m_deleteBackingStoreTimerActive;
bool m_transparent;
static bool s_allowSiteSpecificHacks;
WebCore::Timer<WebView> m_closeWindowTimer;
OwnPtr<TRACKMOUSEEVENT> m_mouseOutTracker;
HWND m_topLevelParent;
OwnPtr<HashSet<WebCore::String> > m_embeddedViewMIMETypes;
long m_lastPanX;
long m_lastPanY;
long m_xOverpan;
long m_yOverpan;
};
#endif