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 "core/loader/EmptyClients.h" 30 31#include "core/frame/LocalFrame.h" 32#include "core/html/HTMLFormElement.h" 33#include "core/html/forms/ColorChooser.h" 34#include "core/html/forms/DateTimeChooser.h" 35#include "core/loader/DocumentLoader.h" 36#include "core/storage/StorageNamespace.h" 37#include "platform/FileChooser.h" 38#include "public/platform/WebApplicationCacheHost.h" 39#include "public/platform/WebServiceWorkerProvider.h" 40#include "public/platform/WebServiceWorkerProviderClient.h" 41 42namespace blink { 43 44void fillWithEmptyClients(Page::PageClients& pageClients) 45{ 46 static ChromeClient* dummyChromeClient = adoptPtr(new EmptyChromeClient).leakPtr(); 47 pageClients.chromeClient = dummyChromeClient; 48 49 static ContextMenuClient* dummyContextMenuClient = adoptPtr(new EmptyContextMenuClient).leakPtr(); 50 pageClients.contextMenuClient = dummyContextMenuClient; 51 52 static DragClient* dummyDragClient = adoptPtr(new EmptyDragClient).leakPtr(); 53 pageClients.dragClient = dummyDragClient; 54 55 static EditorClient* dummyEditorClient = adoptPtr(new EmptyEditorClient).leakPtr(); 56 pageClients.editorClient = dummyEditorClient; 57 58 static InspectorClient* dummyInspectorClient = adoptPtr(new EmptyInspectorClient).leakPtr(); 59 pageClients.inspectorClient = dummyInspectorClient; 60 61 static BackForwardClient* dummyBackForwardClient = adoptPtr(new EmptyBackForwardClient).leakPtr(); 62 pageClients.backForwardClient = dummyBackForwardClient; 63 64 static SpellCheckerClient* dummySpellCheckerClient = adoptPtr(new EmptySpellCheckerClient).leakPtr(); 65 pageClients.spellCheckerClient = dummySpellCheckerClient; 66 67 static StorageClient* dummyStorageClient = adoptPtr(new EmptyStorageClient).leakPtr(); 68 pageClients.storageClient = dummyStorageClient; 69} 70 71class EmptyPopupMenu : public PopupMenu { 72public: 73 virtual void show(const FloatQuad&, const IntSize&, int) OVERRIDE { } 74 virtual void hide() OVERRIDE { } 75 virtual void updateFromElement() OVERRIDE { } 76 virtual void disconnectClient() OVERRIDE { } 77}; 78 79PassRefPtrWillBeRawPtr<PopupMenu> EmptyChromeClient::createPopupMenu(LocalFrame&, PopupMenuClient*) const 80{ 81 return adoptRefWillBeNoop(new EmptyPopupMenu()); 82} 83 84PassOwnPtr<ColorChooser> EmptyChromeClient::createColorChooser(LocalFrame*, ColorChooserClient*, const Color&) 85{ 86 return nullptr; 87} 88 89PassRefPtr<DateTimeChooser> EmptyChromeClient::openDateTimeChooser(DateTimeChooserClient*, const DateTimeChooserParameters&) 90{ 91 return PassRefPtr<DateTimeChooser>(); 92} 93 94void EmptyChromeClient::openTextDataListChooser(HTMLInputElement&) 95{ 96} 97 98void EmptyChromeClient::runOpenPanel(LocalFrame*, PassRefPtr<FileChooser>) 99{ 100} 101 102String EmptyChromeClient::acceptLanguages() 103{ 104 return String(); 105} 106 107NavigationPolicy EmptyFrameLoaderClient::decidePolicyForNavigation(const ResourceRequest&, DocumentLoader*, NavigationPolicy, bool isTransitionNavigation) 108{ 109 return NavigationPolicyIgnore; 110} 111 112void EmptyFrameLoaderClient::dispatchWillSendSubmitEvent(HTMLFormElement*) 113{ 114} 115 116void EmptyFrameLoaderClient::dispatchWillSubmitForm(HTMLFormElement*) 117{ 118} 119 120PassRefPtr<DocumentLoader> EmptyFrameLoaderClient::createDocumentLoader(LocalFrame* frame, const ResourceRequest& request, const SubstituteData& substituteData) 121{ 122 return DocumentLoader::create(frame, request, substituteData); 123} 124 125PassRefPtrWillBeRawPtr<LocalFrame> EmptyFrameLoaderClient::createFrame(const KURL&, const AtomicString&, const Referrer&, HTMLFrameOwnerElement*) 126{ 127 return nullptr; 128} 129 130PassRefPtr<Widget> EmptyFrameLoaderClient::createPlugin(HTMLPlugInElement*, const KURL&, const Vector<String>&, const Vector<String>&, const String&, bool, DetachedPluginPolicy) 131{ 132 return nullptr; 133} 134 135PassRefPtr<Widget> EmptyFrameLoaderClient::createJavaAppletWidget(HTMLAppletElement*, const KURL&, const Vector<String>&, const Vector<String>&) 136{ 137 return nullptr; 138} 139 140void EmptyTextCheckerClient::requestCheckingOfString(PassRefPtrWillBeRawPtr<TextCheckingRequest>) 141{ 142} 143 144void EmptyFrameLoaderClient::didRequestAutocomplete(HTMLFormElement*) 145{ 146} 147 148PassOwnPtr<blink::WebServiceWorkerProvider> EmptyFrameLoaderClient::createServiceWorkerProvider() 149{ 150 return nullptr; 151} 152 153PassOwnPtr<blink::WebApplicationCacheHost> EmptyFrameLoaderClient::createApplicationCacheHost(blink::WebApplicationCacheHostClient*) 154{ 155 return nullptr; 156} 157 158PassOwnPtr<StorageNamespace> EmptyStorageClient::createSessionStorageNamespace() 159{ 160 return nullptr; 161} 162 163} 164