1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/* 2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Redistribution and use in source and binary forms, with or without 5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modification, are permitted provided that the following conditions 6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * are met: 7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 1. Redistributions of source code must retain the above copyright 9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer. 10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 2. Redistributions in binary form must reproduce the above copyright 11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * notice, this list of conditions and the following disclaimer in the 12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * documentation and/or other materials provided with the distribution. 13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * its contributors may be used to endorse or promote products derived 15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * from this software without specific prior written permission. 16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 21563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 22563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 28563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "config.h" 30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "UIDelegate.h" 31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "DumpRenderTree.h" 33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "DraggingInfo.h" 34563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "EventSender.h" 35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include "LayoutTestController.h" 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#include "DRTDesktopNotificationPresenter.h" 37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 38563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebCore/COMPtr.h> 39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <wtf/Platform.h> 40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <wtf/Vector.h> 41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <JavaScriptCore/Assertions.h> 42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <JavaScriptCore/JavaScriptCore.h> 43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <WebKit/WebKit.h> 44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <stdio.h> 45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkusing std::wstring; 47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass DRTUndoObject { 49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic: 50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoObject(IWebUndoTarget* target, BSTR actionName, IUnknown* obj) 51563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark : m_target(target) 52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_actionName(SysAllocString(actionName)) 53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_obj(obj) 54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark { 55563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 56563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ~DRTUndoObject() 58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark { 59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark SysFreeString(m_actionName); 60563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void invoke() 63563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark { 64563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_target->invoke(m_actionName, m_obj.get()); 65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkprivate: 68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark IWebUndoTarget* m_target; 69563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark BSTR m_actionName; 70563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark COMPtr<IUnknown> m_obj; 71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}; 72563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass DRTUndoStack { 74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic: 75563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ~DRTUndoStack() { deleteAllValues(m_undoVector); } 76563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 77563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool isEmpty() const { return m_undoVector.isEmpty(); } 78563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void clear() { deleteAllValues(m_undoVector); m_undoVector.clear(); } 79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 80563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void push(DRTUndoObject* undoObject) { m_undoVector.append(undoObject); } 81563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoObject* pop() { DRTUndoObject* top = m_undoVector.last(); m_undoVector.removeLast(); return top; } 82563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 83563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkprivate: 84563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark Vector<DRTUndoObject*> m_undoVector; 85563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}; 86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 87563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkclass DRTUndoManager { 88563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkpublic: 89563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoManager(); 90563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 91563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void removeAllActions(); 92563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void registerUndoWithTarget(IWebUndoTarget* target, BSTR actionName, IUnknown* obj); 93563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void redo(); 94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark void undo(); 95563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool canRedo() { return !m_redoStack->isEmpty(); } 96563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool canUndo() { return !m_undoStack->isEmpty(); } 97563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 98563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkprivate: 99563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark OwnPtr<DRTUndoStack> m_redoStack; 100563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark OwnPtr<DRTUndoStack> m_undoStack; 101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool m_isRedoing; 102563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark bool m_isUndoing; 103563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark}; 104563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 105563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkDRTUndoManager::DRTUndoManager() 106563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark : m_redoStack(new DRTUndoStack) 107563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_undoStack(new DRTUndoStack) 108563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_isRedoing(false) 109563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_isUndoing(false) 110563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 111563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 112563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 113563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid DRTUndoManager::removeAllActions() 114563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 115563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_redoStack->clear(); 116563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoStack->clear(); 117563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 118563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 119563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid DRTUndoManager::registerUndoWithTarget(IWebUndoTarget* target, BSTR actionName, IUnknown* obj) 120563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 121563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!m_isUndoing && !m_isRedoing) 122563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_redoStack->clear(); 123563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 124563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoStack* stack = m_isUndoing ? m_redoStack.get() : m_undoStack.get(); 125563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark stack->push(new DRTUndoObject(target, actionName, obj)); 126563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 127563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 128563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid DRTUndoManager::redo() 129563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 130563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!canRedo()) 131563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 132563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 133563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_isRedoing = true; 134563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 135563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoObject* redoObject = m_redoStack->pop(); 136563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark redoObject->invoke(); 137563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark delete redoObject; 138563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 139563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_isRedoing = false; 140563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 141563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 142563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid DRTUndoManager::undo() 143563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 144563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!canUndo()) 145563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return; 146563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 147563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_isUndoing = true; 148563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 149563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DRTUndoObject* undoObject = m_undoStack->pop(); 150563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark undoObject->invoke(); 151563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark delete undoObject; 152563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 153563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_isUndoing = false; 154563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 155563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 156563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkUIDelegate::UIDelegate() 157563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark : m_refCount(1) 158563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark , m_undoManager(new DRTUndoManager) 159231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_desktopNotifications(new DRTDesktopNotificationPresenter) 160563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 161563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_frame.bottom = 0; 162563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_frame.top = 0; 163563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_frame.left = 0; 164563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_frame.right = 0; 165563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 166563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 167563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid UIDelegate::resetUndoManager() 168563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 169563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoManager.set(new DRTUndoManager); 170563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 171563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 172563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::QueryInterface(REFIID riid, void** ppvObject) 173563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 174563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *ppvObject = 0; 175563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (IsEqualGUID(riid, IID_IUnknown)) 176563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *ppvObject = static_cast<IWebUIDelegate*>(this); 177563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark else if (IsEqualGUID(riid, IID_IWebUIDelegate)) 178563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *ppvObject = static_cast<IWebUIDelegate*>(this); 179231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block else if (IsEqualGUID(riid, IID_IWebUIDelegate2)) 180231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *ppvObject = static_cast<IWebUIDelegate2*>(this); 181563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate)) 182563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *ppvObject = static_cast<IWebUIDelegatePrivate*>(this); 183e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate2)) 184e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke *ppvObject = static_cast<IWebUIDelegatePrivate2*>(this); 185e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke else if (IsEqualGUID(riid, IID_IWebUIDelegatePrivate3)) 186e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke *ppvObject = static_cast<IWebUIDelegatePrivate3*>(this); 187563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark else 188563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_NOINTERFACE; 189563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 190563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark AddRef(); 191563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 192563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 193563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 194563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkULONG STDMETHODCALLTYPE UIDelegate::AddRef() 195563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 196563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return ++m_refCount; 197563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 198563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 199563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkULONG STDMETHODCALLTYPE UIDelegate::Release() 200563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 201563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark ULONG newRef = --m_refCount; 202563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!newRef) 203563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark delete(this); 204563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 205563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return newRef; 206563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 207563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 208563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::hasCustomMenuImplementation( 209563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BOOL *hasCustomMenus) 210563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 211563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *hasCustomMenus = TRUE; 212563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 213563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 214563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 215563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 216563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::trackCustomPopupMenu( 217563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 218563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ OLE_HANDLE menu, 219563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ LPPOINT point) 220563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 221563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // Do nothing 222563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 223563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 224563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 225563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::registerUndoWithTarget( 226563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebUndoTarget* target, 227563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR actionName, 228563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IUnknown* actionArg) 229563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 230563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoManager->registerUndoWithTarget(target, actionName, actionArg); 231563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 232563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 233563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 234563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::removeAllActionsWithTarget( 235563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebUndoTarget*) 236563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 237563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoManager->removeAllActions(); 238563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 239563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 240563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 241563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::setActionTitle( 242563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR actionTitle) 243563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 244563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // It is not neccessary to implement this for DRT because there is 245563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark // menu to write out the title to. 246563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 247563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 248563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 249563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::undo() 250563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 251563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoManager->undo(); 252563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 253563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 254563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 255563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::redo() 256563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 257563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_undoManager->redo(); 258563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 259563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 260563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 261563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::canUndo( 262563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BOOL* result) 263563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 264563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!result) 265563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_POINTER; 266563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 267563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *result = m_undoManager->canUndo(); 268563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 269563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 270563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 271563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::canRedo( 272563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BOOL* result) 273563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 274563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!result) 275563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_POINTER; 276563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 277563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *result = m_undoManager->canRedo(); 278563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 279563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 280563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::printFrame( 2820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 2830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame) 2840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 2860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::ftpDirectoryTemplatePath( 2890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 2900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ BSTR *path) 2910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 2920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!path) 2930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 2940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *path = 0; 2950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 2960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 2970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 2990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewHeaderHeight( 3000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ float *result) 3020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!result) 3040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 3050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *result = 0; 3060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewFooterHeight( 3100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ float *result) 3120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!result) 3140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 3150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *result = 0; 3160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::drawHeaderInRect( 3200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ RECT *rect, 3220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ OLE_HANDLE drawingContext) 3230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::drawFooterInRect( 3280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ RECT *rect, 3300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ OLE_HANDLE drawingContext, 3310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ UINT pageIndex, 3320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ UINT pageCount) 3330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewPrintingMarginRect( 3380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3390bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ RECT *rect) 3400bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3410bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3420bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3430bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3440bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::canRunModal( 3450bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3460bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ BOOL *canRunBoolean) 3470bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3480bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3490bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3500bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3510bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::createModalDialog( 3520bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender, 3530bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebURLRequest *request, 3540bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ IWebView **newWebView) 3550bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3560bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3570bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3580bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::runModal( 3600bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView) 3610bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3620bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3630bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::isMenuBarVisible( 3660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3670bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ BOOL *visible) 3680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!visible) 3700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 3710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *visible = false; 3720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::setMenuBarVisible( 3760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ BOOL visible) 3780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3820bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::runDatabaseSizeLimitPrompt( 3830bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ BSTR displayName, 3850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *initiatedByFrame, 3860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ BOOL *allowed) 3870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 3880bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!allowed) 3890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 3900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *allowed = false; 3910bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 3920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 3930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 3940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::paintCustomScrollbar( 3950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 3960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ HDC hDC, 3970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ RECT rect, 3980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ WebScrollBarControlSize size, 3990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ WebScrollbarControlState state, 4000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ WebScrollbarControlPart pressedPart, 4010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ BOOL vertical, 4020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ float value, 4030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ float proportion, 4040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ WebScrollbarControlPartMask parts) 4050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 4070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 4090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::paintCustomScrollCorner( 4100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *webView, 4110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ HDC hDC, 4120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ RECT rect) 4130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 4140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 4150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 4160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 417563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::setFrame( 418563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* /*sender*/, 419563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ RECT* frame) 420563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 421563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark m_frame = *frame; 422563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 423563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 424563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 425563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewFrame( 426563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* /*sender*/, 427563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ RECT* frame) 428563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 429563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *frame = m_frame; 430563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 431563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 432563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 433563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptAlertPanelWithMessage( 434563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* /*sender*/, 435563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR message) 436563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 437563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark printf("ALERT: %S\n", message ? message : L""); 438563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 439563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 440563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 441563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 442563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptConfirmPanelWithMessage( 443563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* sender, 444563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR message, 445563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BOOL* result) 446563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 447563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark printf("CONFIRM: %S\n", message ? message : L""); 448563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *result = TRUE; 449563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 450563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 451563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 452563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 453563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::runJavaScriptTextInputPanelWithPrompt( 454563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 455563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR message, 456563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR defaultText, 457563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BSTR *result) 458563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 459563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark printf("PROMPT: %S, default text: %S\n", message ? message : L"", defaultText ? defaultText : L""); 460563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *result = SysAllocString(defaultText); 461563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 462563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 463563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 464563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 465563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::runBeforeUnloadConfirmPanelWithMessage( 466563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* /*sender*/, 467563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR /*message*/, 468563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame* /*initiatedByFrame*/, 469563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ BOOL* result) 470563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 471563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!result) 472563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_POINTER; 473563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *result = TRUE; 474563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_NOTIMPL; 475563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 476563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 477563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewAddMessageToConsole( 478563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* sender, 479563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR message, 480563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ int lineNumber, 481563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR url, 482563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BOOL isError) 483563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 484563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark wstring newMessage; 485563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (message) { 486563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark newMessage = message; 487563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark size_t fileProtocol = newMessage.find(L"file://"); 488563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (fileProtocol != wstring::npos) 48981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch newMessage = newMessage.substr(0, fileProtocol) + lastPathComponent(newMessage.substr(fileProtocol)); 490563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark } 491563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 49206ea8e899e48f1f2f396b70e63fae369f2f23232Kristian Monsen printf("CONSOLE MESSAGE: line %d: %s\n", lineNumber, toUTF8(newMessage).c_str()); 493563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 494563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 495563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 496563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::doDragDrop( 497563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* sender, 498563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IDataObject* object, 499563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IDropSource* source, 500563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ DWORD okEffect, 501563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ DWORD* performedEffect) 502563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 503563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!performedEffect) 504563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_POINTER; 505563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 506563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *performedEffect = 0; 507563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 508563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark draggingInfo = new DraggingInfo(object, source); 509cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block HRESULT oleDragAndDropReturnValue = DRAGDROP_S_CANCEL; 510cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block replaySavedEvents(&oleDragAndDropReturnValue); 511231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (draggingInfo) { 512231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block *performedEffect = draggingInfo->performedDropEffect(); 513231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block delete draggingInfo; 514231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block draggingInfo = 0; 515231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 516cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block return oleDragAndDropReturnValue; 517563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 518563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 519563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewGetDlgCode( 520563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView* /*sender*/, 521563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ UINT /*keyCode*/, 522563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ LONG_PTR *code) 523563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 524563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!code) 525563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_POINTER; 526563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *code = 0; 527563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_NOTIMPL; 528563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 529563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 530563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::createWebViewWithRequest( 531563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 532563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebURLRequest *request, 533563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [retval][out] */ IWebView **newWebView) 534563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 535563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (!::gLayoutTestController->canOpenWindows()) 536563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return E_FAIL; 537563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *newWebView = createWebViewAndOffscreenWindow(); 538563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 539563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 540563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 541563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewClose( 542563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender) 543563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 544563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark HWND hostWindow; 545563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark sender->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow)); 546563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark DestroyWindow(hostWindow); 547563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 548563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 549563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 550563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewFocus( 551563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender) 552563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 553563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark HWND hostWindow; 554563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark sender->hostWindow(reinterpret_cast<OLE_HANDLE*>(&hostWindow)); 555563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark SetForegroundWindow(hostWindow); 556563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 557563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 558563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 559563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewUnfocus( 560563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender) 561563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 562563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark SetForegroundWindow(GetDesktopWindow()); 563563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 564563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 565563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 566563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::webViewPainted( 567563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender) 568563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 569563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 570563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 571563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 572563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::exceededDatabaseQuota( 573563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebView *sender, 574563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebFrame *frame, 575563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ IWebSecurityOrigin *origin, 576563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark /* [in] */ BSTR databaseIdentifier) 577563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 578231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block BSTR protocol; 579231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block BSTR host; 580231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block unsigned short port; 581231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 582231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block origin->protocol(&protocol); 583231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block origin->host(&host); 584231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block origin->port(&port); 585231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 586231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (!done && gLayoutTestController->dumpDatabaseCallbacks()) 587231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%S, %S, %i} database:%S\n", protocol, host, port, databaseIdentifier); 588231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 589231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block SysFreeString(protocol); 590231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block SysFreeString(host); 591231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 592563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark static const unsigned long long defaultQuota = 5 * 1024 * 1024; 593563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark origin->setQuota(defaultQuota); 594563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 595563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 596563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 597563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 5980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::embeddedViewWithArguments( 5990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender, 6000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebFrame *frame, 6010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IPropertyBag *arguments, 6020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [retval][out] */ IWebEmbeddedView **view) 6030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!view) 6050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_POINTER; 6060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch *view = 0; 6070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 6080bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewClosing( 6110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender) 6120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 6140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewSetCursor( 6170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender, 6180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ OLE_HANDLE cursor) 6190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 6210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 6220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 6230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben MurdochHRESULT STDMETHODCALLTYPE UIDelegate::webViewDidInvalidate( 6240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* [in] */ IWebView *sender) 6250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 6260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return E_NOTIMPL; 6270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 628563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 629563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkHRESULT STDMETHODCALLTYPE UIDelegate::setStatusText(IWebView*, BSTR text) 630563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 631563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark if (gLayoutTestController->dumpStatusCallbacks()) 6326c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", text ? toUTF8(text).c_str() : ""); 633563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return S_OK; 634563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 635231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 636231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve BlockHRESULT STDMETHODCALLTYPE UIDelegate::desktopNotificationsDelegate(IWebDesktopNotificationsDelegate** result) 637231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block{ 638231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_desktopNotifications.copyRefTo(result); 639231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block return S_OK; 640231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block} 641e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 642e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeHRESULT STDMETHODCALLTYPE UIDelegate::createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView) 643e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 644e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return E_NOTIMPL; 645e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 646e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 647e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeHRESULT STDMETHODCALLTYPE UIDelegate::drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect) 648e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 649e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return E_NOTIMPL; 650e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 651e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 652e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeHRESULT STDMETHODCALLTYPE UIDelegate::decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener) 653e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 654e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return E_NOTIMPL; 655e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 656e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 657e458d70a0d18538346f41b503114c9ebe6b2ce12Leon ClarkeHRESULT STDMETHODCALLTYPE UIDelegate::didPressMissingPluginButton(IDOMElement* element) 658e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke{ 659e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke printf("MISSING PLUGIN BUTTON PRESSED\n"); 660e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke return S_OK; 661e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke} 662e458d70a0d18538346f41b503114c9ebe6b2ce12Leon Clarke 663