#ifndef WebView_H
#define WebView_H
#include "WebKit.h"
#include "WebFrame.h"
#include "WebPreferences.h"
#include <WebCore/COMPtr.h>
#include <WebCore/DragActions.h>
#include <WebCore/IntRect.h>
#include <WebCore/RefCountedGDIHandle.h>
#include <WebCore/SuspendableTimer.h>
#include <WebCore/WindowMessageListener.h>
#include <wtf/HashSet.h>
#include <wtf/OwnPtr.h>
#include <wtf/RefPtr.h>
#if USE(ACCELERATED_COMPOSITING)
#include <WebCore/CACFLayerTreeHostClient.h>
#include <WebCore/GraphicsLayerClient.h>
#endif
#if ENABLE(FULLSCREEN_API)
#include <WebCore/FullScreenControllerClient.h>
#endif
namespace WebCore {
#if USE(ACCELERATED_COMPOSITING)
class CACFLayerTreeHost;
#endif
class FullScreenController;
#if PLATFORM(WIN) && USE(AVFOUNDATION)
struct GraphicsDeviceAdapter;
#endif
}
namespace WebCore {
class HistoryItem;
}
class FullscreenVideoController;
class WebBackForwardList;
class WebFrame;
class WebInspector;
class WebInspectorClient;
typedef WebCore::RefCountedGDIHandle<HBITMAP> RefCountedHBITMAP;
typedef WebCore::RefCountedGDIHandle<HRGN> RefCountedHRGN;
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
#if USE(ACCELERATED_COMPOSITING)
, WebCore::GraphicsLayerClient
, WebCore::CACFLayerTreeHostClient
#endif
#if ENABLE(FULLSCREEN_API)
, WebCore::FullScreenControllerClient
#endif
{
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 setAccessibilityDelegate(
IAccessibilityDelegate *d);
virtual HRESULT STDMETHODCALLTYPE accessibilityDelegate(
IAccessibilityDelegate **d);
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 reloadFromOrigin(
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 MIMETypeForExtension(
BSTR extension,
BSTR *mimeType);
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 paintScrollViewRectToContextAtPoint(
RECT rect,
POINT pt,
OLE_HANDLE dc);
virtual HRESULT STDMETHODCALLTYPE reportException(
JSContextRef context,
JSValueRef exception);
virtual HRESULT STDMETHODCALLTYPE elementFromJS(
JSContextRef context,
JSValueRef nodeObject,
IDOMElement **element);
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);
virtual HRESULT STDMETHODCALLTYPE setCanStartPlugins(
BOOL canStartPlugins);
virtual HRESULT STDMETHODCALLTYPE addUserScriptToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
unsigned whitelistCount, BSTR* whitelist,
unsigned blacklistCount, BSTR* blacklist,
WebUserScriptInjectionTime);
virtual HRESULT STDMETHODCALLTYPE addUserStyleSheetToGroup(BSTR groupName, IWebScriptWorld*, BSTR source, BSTR url,
unsigned whitelistCount, BSTR* whitelist,
unsigned blacklistCount, BSTR* blacklist);
virtual HRESULT STDMETHODCALLTYPE removeUserScriptFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetFromGroup(BSTR groupName, IWebScriptWorld*, BSTR url);
virtual HRESULT STDMETHODCALLTYPE removeUserScriptsFromGroup(BSTR groupName, IWebScriptWorld*);
virtual HRESULT STDMETHODCALLTYPE removeUserStyleSheetsFromGroup(BSTR groupName, IWebScriptWorld*);
virtual HRESULT STDMETHODCALLTYPE removeAllUserContentFromGroup(BSTR groupName);
virtual HRESULT STDMETHODCALLTYPE unused1();
virtual HRESULT STDMETHODCALLTYPE unused2();
virtual HRESULT STDMETHODCALLTYPE invalidateBackingStore(const RECT*);
virtual HRESULT STDMETHODCALLTYPE addOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
virtual HRESULT STDMETHODCALLTYPE removeOriginAccessWhitelistEntry(BSTR sourceOrigin, BSTR destinationProtocol, BSTR destinationHost, BOOL allowDestinationSubdomains);
virtual HRESULT STDMETHODCALLTYPE resetOriginAccessWhitelists();
virtual HRESULT STDMETHODCALLTYPE setHistoryDelegate(IWebHistoryDelegate* historyDelegate);
virtual HRESULT STDMETHODCALLTYPE historyDelegate(IWebHistoryDelegate** historyDelegate);
virtual HRESULT STDMETHODCALLTYPE addVisitedLinks(BSTR* visitedURLs, unsigned visitedURLCount);
virtual HRESULT STDMETHODCALLTYPE unused3();
virtual HRESULT STDMETHODCALLTYPE unused4();
virtual HRESULT STDMETHODCALLTYPE unused5();
virtual HRESULT STDMETHODCALLTYPE setGeolocationProvider(IWebGeolocationProvider* locationProvider);
virtual HRESULT STDMETHODCALLTYPE geolocationProvider(IWebGeolocationProvider** locationProvider);
virtual HRESULT STDMETHODCALLTYPE geolocationDidChangePosition(IWebGeolocationPosition* position);
virtual HRESULT STDMETHODCALLTYPE geolocationDidFailWithError(IWebError* error);
virtual HRESULT STDMETHODCALLTYPE setDomainRelaxationForbiddenForURLScheme(BOOL forbidden, BSTR scheme);
virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsSecure(BSTR);
virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingLocalStorageAccessInPrivateBrowsing(BSTR);
virtual HRESULT STDMETHODCALLTYPE registerURLSchemeAsAllowingDatabaseAccessInPrivateBrowsing(BSTR);
virtual HRESULT STDMETHODCALLTYPE nextDisplayIsSynchronous();
virtual HRESULT STDMETHODCALLTYPE defaultMinimumTimerInterval(
double *interval);
virtual HRESULT STDMETHODCALLTYPE setMinimumTimerInterval(
double);
virtual HRESULT STDMETHODCALLTYPE httpPipeliningEnabled(
BOOL* enabled);
virtual HRESULT STDMETHODCALLTYPE setHTTPPipeliningEnabled(
BOOL);
virtual HRESULT STDMETHODCALLTYPE setUsesLayeredWindow(BOOL);
virtual HRESULT STDMETHODCALLTYPE usesLayeredWindow(BOOL*);
bool shouldUseEmbeddedView(const WTF::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 verticalScroll(WPARAM, LPARAM);
bool horizontalScroll(WPARAM, LPARAM);
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);
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();
void closeWindowTimerFired();
bool didClose() const { return m_didClose; }
bool transparent() const { return m_transparent; }
bool usesLayeredWindow() const { return m_usesLayeredWindow; }
bool onIMEStartComposition();
bool onIMEComposition(LPARAM);
bool onIMEEndComposition();
bool onIMEChar(WPARAM, LPARAM);
bool onIMENotify(WPARAM, LPARAM, LRESULT*);
LRESULT onIMERequest(WPARAM, LPARAM);
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 WTF::String& userAgentForKURL(const WebCore::KURL& url);
static bool canHandleRequest(const WebCore::ResourceRequest&);
static WTF::String standardUserAgentWithApplicationName(const WTF::String&);
void setIsBeingDestroyed();
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 WTF::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; }
HWND viewWindow() const { return m_viewWindow; }
void updateActiveState();
bool onGetObject(WPARAM, LPARAM, LRESULT&) const;
static STDMETHODIMP AccessibleObjectFromWindow(HWND, DWORD objectID, REFIID, void** ppObject);
void downloadURL(const WebCore::KURL&);
#if USE(ACCELERATED_COMPOSITING)
void flushPendingGraphicsLayerChangesSoon();
void setRootChildLayer(WebCore::GraphicsLayer*);
#endif
#if PLATFORM(WIN) && USE(AVFOUNDATION)
WebCore::GraphicsDeviceAdapter* graphicsDeviceAdapter() const;
#endif
void enterFullscreenForNode(WebCore::Node*);
void exitFullscreen();
void setLastCursor(HCURSOR cursor) { m_lastSetCursor = cursor; }
void setGlobalHistoryItem(WebCore::HistoryItem*);
#if ENABLE(FULLSCREEN_API)
bool supportsFullScreenForElement(const WebCore::Element*, bool withKeyboard) const;
bool isFullScreen() const;
WebCore::FullScreenController* fullScreenController();
void setFullScreenElement(PassRefPtr<WebCore::Element>);
WebCore::Element* fullScreenElement() const { return m_fullScreenElement.get(); }
#endif
HRESULT STDMETHODCALLTYPE setCompositionForTesting(
BSTR composition,
UINT from,
UINT length);
HRESULT STDMETHODCALLTYPE hasCompositionForTesting( BOOL* result);
HRESULT STDMETHODCALLTYPE confirmCompositionForTesting( BSTR composition);
HRESULT STDMETHODCALLTYPE compositionRangeForTesting( UINT* startPosition, UINT* length);
HRESULT STDMETHODCALLTYPE firstRectForCharacterRangeForTesting(
UINT location,
UINT length,
RECT* resultRect);
HRESULT STDMETHODCALLTYPE selectedRangeForTesting( UINT* location, UINT* length);
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();
void sizeChanged(const WebCore::IntSize&);
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);
void performLayeredWindowUpdate();
WebCore::DragOperation keyStateToDragOperation(DWORD grfKeyState) const;
DWORD m_lastDropEffect;
#if USE(ACCELERATED_COMPOSITING)
virtual void notifyAnimationStarted(const WebCore::GraphicsLayer*, double time);
virtual void notifyFlushRequired(const WebCore::GraphicsLayer*);
virtual void paintContents(const WebCore::GraphicsLayer*, WebCore::GraphicsContext&, WebCore::GraphicsLayerPaintingPhase, const WebCore::IntRect& inClip);
virtual void flushPendingGraphicsLayerChanges();
#endif
bool m_shouldInvertColors;
void setShouldInvertColors(bool);
protected:
static bool registerWebViewWindowClass();
static LRESULT CALLBACK WebViewWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
HIMC getIMMContext();
void releaseIMMContext(HIMC);
static bool allowSiteSpecificHacks() { return s_allowSiteSpecificHacks; }
void preflightSpellChecker();
bool continuousCheckingAllowed();
void initializeToolTipWindow();
void prepareCandidateWindow(WebCore::Frame*, HIMC);
void updateSelectionForIME();
LRESULT onIMERequestCharPosition(WebCore::Frame*, IMECHARPOSITION*);
LRESULT onIMERequestReconvertString(WebCore::Frame*, RECONVERTSTRING*);
bool developerExtrasEnabled() const;
bool shouldInitializeTrackPointHack();
void addToAllWebViewsSet();
void removeFromAllWebViewsSet();
virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM);
#if ENABLE(FULLSCREEN_API)
virtual HWND fullScreenClientWindow() const;
virtual HWND fullScreenClientParentWindow() const;
virtual void fullScreenClientSetParentWindow(HWND);
virtual void fullScreenClientWillEnterFullScreen();
virtual void fullScreenClientDidEnterFullScreen();
virtual void fullScreenClientWillExitFullScreen();
virtual void fullScreenClientDidExitFullScreen();
virtual void fullScreenClientForceRepaint();
virtual void fullScreenClientSaveScrollPosition();
virtual void fullScreenClientRestoreScrollPosition();
#endif
ULONG m_refCount;
#if !ASSERT_DISABLED
bool m_deletionHasBegun;
#endif
HWND m_hostWindow;
HWND m_viewWindow;
WebFrame* m_mainFrame;
WebCore::Page* m_page;
#if ENABLE(INSPECTOR)
WebInspectorClient* m_inspectorClient;
#endif // ENABLE(INSPECTOR)
RefPtr<RefCountedHBITMAP> m_backingStoreBitmap;
SIZE m_backingStoreSize;
RefPtr<RefCountedHRGN> m_backingStoreDirtyRegion;
COMPtr<IAccessibilityDelegate> m_accessibilityDelegate;
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<IWebHistoryDelegate> m_historyDelegate;
COMPtr<WebPreferences> m_preferences;
#if ENABLE(INSPECTOR)
COMPtr<WebInspector> m_webInspector;
#endif // ENABLE(INSPECTOR)
COMPtr<IWebGeolocationProvider> m_geolocationProvider;
bool m_userAgentOverridden;
bool m_useBackForwardList;
WTF::String m_userAgentCustom;
WTF::String m_userAgentStandard;
float m_zoomMultiplier;
bool m_zoomsTextOnly;
WTF::String m_overrideEncoding;
WTF::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_didClose;
bool m_hasCustomDropTarget;
unsigned m_inIMEComposition;
HWND m_toolTipHwnd;
WTF::String m_toolTip;
bool m_deleteBackingStoreTimerActive;
bool m_transparent;
static bool s_allowSiteSpecificHacks;
WebCore::SuspendableTimer* m_closeWindowTimer;
OwnPtr<TRACKMOUSEEVENT> m_mouseOutTracker;
HWND m_topLevelParent;
OwnPtr<HashSet<WTF::String> > m_embeddedViewMIMETypes;
RefPtr<WebCore::Node> m_gestureTargetNode;
long m_lastPanX;
long m_lastPanY;
long m_xOverpan;
long m_yOverpan;
#if ENABLE(VIDEO)
OwnPtr<FullscreenVideoController> m_fullScreenVideoController;
#endif
#if USE(ACCELERATED_COMPOSITING)
bool isAcceleratedCompositing() const { return m_isAcceleratedCompositing; }
void setAcceleratedCompositing(bool);
RefPtr<WebCore::CACFLayerTreeHost> m_layerTreeHost;
OwnPtr<WebCore::GraphicsLayer> m_backingLayer;
bool m_isAcceleratedCompositing;
#endif
bool m_nextDisplayIsSynchronous;
bool m_usesLayeredWindow;
HCURSOR m_lastSetCursor;
RefPtr<WebCore::HistoryItem> m_globalHistoryItem;
#if ENABLE(FULLSCREEN_API)
RefPtr<WebCore::Element> m_fullScreenElement;
OwnPtr<WebCore::FullScreenController> m_fullscreenController;
WebCore::IntPoint m_scrollPosition;
#endif
};
#endif