1/* 2 * Copyright (C) 2006 Eric Seidel <eric@webkit.org> 3 * Copyright (C) 2008, 2009, 2012 Apple Inc. All rights reserved. 4 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 2. Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * 15 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 16 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 19 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include "config.h" 29#include "EmptyClients.h" 30 31#include "DateTimeChooser.h" 32#include "DocumentLoader.h" 33#include "FileChooser.h" 34#include "FormState.h" 35#include "Frame.h" 36#include "FrameNetworkingContext.h" 37#include "HTMLFormElement.h" 38 39#if ENABLE(INPUT_TYPE_COLOR) 40#include "ColorChooser.h" 41#endif 42 43namespace WebCore { 44 45void fillWithEmptyClients(Page::PageClients& pageClients) 46{ 47 static ChromeClient* dummyChromeClient = adoptPtr(new EmptyChromeClient).leakPtr(); 48 pageClients.chromeClient = dummyChromeClient; 49 50#if ENABLE(CONTEXT_MENUS) 51 static ContextMenuClient* dummyContextMenuClient = adoptPtr(new EmptyContextMenuClient).leakPtr(); 52 pageClients.contextMenuClient = dummyContextMenuClient; 53#endif 54 55#if ENABLE(DRAG_SUPPORT) 56 static DragClient* dummyDragClient = adoptPtr(new EmptyDragClient).leakPtr(); 57 pageClients.dragClient = dummyDragClient; 58#endif 59 60 static EditorClient* dummyEditorClient = adoptPtr(new EmptyEditorClient).leakPtr(); 61 pageClients.editorClient = dummyEditorClient; 62 63 static InspectorClient* dummyInspectorClient = adoptPtr(new EmptyInspectorClient).leakPtr(); 64 pageClients.inspectorClient = dummyInspectorClient; 65} 66 67class EmptyPopupMenu : public PopupMenu { 68public: 69 virtual void show(const IntRect&, FrameView*, int) { } 70 virtual void hide() { } 71 virtual void updateFromElement() { } 72 virtual void disconnectClient() { } 73}; 74 75class EmptySearchPopupMenu : public SearchPopupMenu { 76public: 77 virtual PopupMenu* popupMenu() { return m_popup.get(); } 78 virtual void saveRecentSearches(const AtomicString&, const Vector<String>&) { } 79 virtual void loadRecentSearches(const AtomicString&, Vector<String>&) { } 80 virtual bool enabled() { return false; } 81 82private: 83 RefPtr<EmptyPopupMenu> m_popup; 84}; 85 86PassRefPtr<PopupMenu> EmptyChromeClient::createPopupMenu(PopupMenuClient*) const 87{ 88 return adoptRef(new EmptyPopupMenu()); 89} 90 91PassRefPtr<SearchPopupMenu> EmptyChromeClient::createSearchPopupMenu(PopupMenuClient*) const 92{ 93 return adoptRef(new EmptySearchPopupMenu()); 94} 95 96#if ENABLE(INPUT_TYPE_COLOR) 97PassOwnPtr<ColorChooser> EmptyChromeClient::createColorChooser(ColorChooserClient*, const Color&) 98{ 99 return nullptr; 100} 101#endif 102 103#if ENABLE(DATE_AND_TIME_INPUT_TYPES) 104PassRefPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) 105{ 106 return PassRefPtr<DateTimeChooser>(); 107} 108#endif 109 110void EmptyChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser>) 111{ 112} 113 114void EmptyFrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>, const String&) 115{ 116} 117 118void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunction, const NavigationAction&, const ResourceRequest&, PassRefPtr<FormState>) 119{ 120} 121 122void EmptyFrameLoaderClient::dispatchWillSendSubmitEvent(PassRefPtr<FormState>) 123{ 124} 125 126void EmptyFrameLoaderClient::dispatchWillSubmitForm(FramePolicyFunction, PassRefPtr<FormState>) 127{ 128} 129 130PassRefPtr<DocumentLoader> EmptyFrameLoaderClient::createDocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData) 131{ 132 return DocumentLoader::create(request, substituteData); 133} 134 135PassRefPtr<Frame> EmptyFrameLoaderClient::createFrame(const KURL&, const String&, HTMLFrameOwnerElement*, const String&, bool, int, int) 136{ 137 return 0; 138} 139 140PassRefPtr<Widget> EmptyFrameLoaderClient::createPlugin(const IntSize&, HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool) 141{ 142 return 0; 143} 144 145void EmptyFrameLoaderClient::recreatePlugin(Widget*) 146{ 147} 148 149PassRefPtr<Widget> EmptyFrameLoaderClient::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) 150{ 151 return 0; 152} 153 154#if ENABLE(PLUGIN_PROXY_FOR_VIDEO) 155PassRefPtr<Widget> EmptyFrameLoaderClient::createMediaPlayerProxyPlugin(const IntSize&, HTMLMediaElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) 156{ 157 return 0; 158} 159#endif 160 161PassRefPtr<FrameNetworkingContext> EmptyFrameLoaderClient::createNetworkingContext() 162{ 163 return PassRefPtr<FrameNetworkingContext>(); 164} 165 166void EmptyTextCheckerClient::requestCheckingOfString(PassRefPtr<TextCheckingRequest>) 167{ 168} 169 170void EmptyEditorClient::registerUndoStep(PassRefPtr<UndoStep>) 171{ 172} 173 174void EmptyEditorClient::registerRedoStep(PassRefPtr<UndoStep>) 175{ 176} 177 178#if ENABLE(CONTEXT_MENUS) 179#if USE(CROSS_PLATFORM_CONTEXT_MENUS) 180PassOwnPtr<ContextMenu> EmptyContextMenuClient::customizeMenu(PassOwnPtr<ContextMenu>) 181{ 182 return nullptr; 183} 184#endif 185#endif 186 187} 188