1/* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * Portions Copyright (c) 2010 Motorola Mobility, Inc. All rights reserved. 4 * Copyright (C) 2011 Igalia S.L. 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. AND ITS CONTRIBUTORS ``AS IS'' 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 17 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS 19 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 25 * THE POSSIBILITY OF SUCH DAMAGE. 26 */ 27 28#include "config.h" 29#include "WebPage.h" 30 31#include "NotImplemented.h" 32#include "WebEvent.h" 33#include "WindowsKeyboardCodes.h" 34#include <WebCore/FocusController.h> 35#include <WebCore/Frame.h> 36#include <WebCore/KeyboardEvent.h> 37#include <WebCore/Page.h> 38#include <WebCore/PlatformKeyboardEvent.h> 39#include <WebCore/Settings.h> 40 41using namespace WebCore; 42 43namespace WebKit { 44 45void WebPage::platformInitialize() 46{ 47 notImplemented(); 48} 49 50void WebPage::platformPreferencesDidChange(const WebPreferencesStore&) 51{ 52 notImplemented(); 53} 54 55static inline void scroll(Page* page, ScrollDirection direction, ScrollGranularity granularity) 56{ 57 page->focusController()->focusedOrMainFrame()->eventHandler()->scrollRecursively(direction, granularity); 58} 59 60bool WebPage::performDefaultBehaviorForKeyEvent(const WebKeyboardEvent& keyboardEvent) 61{ 62 if (keyboardEvent.type() != WebEvent::KeyDown && keyboardEvent.type() != WebEvent::RawKeyDown) 63 return false; 64 65 switch (keyboardEvent.windowsVirtualKeyCode()) { 66 case VK_BACK: 67 if (keyboardEvent.shiftKey()) 68 m_page->goForward(); 69 else 70 m_page->goBack(); 71 break; 72 case VK_SPACE: 73 scroll(m_page.get(), keyboardEvent.shiftKey() ? ScrollUp : ScrollDown, ScrollByPage); 74 break; 75 case VK_LEFT: 76 scroll(m_page.get(), ScrollLeft, ScrollByLine); 77 break; 78 case VK_RIGHT: 79 scroll(m_page.get(), ScrollRight, ScrollByLine); 80 break; 81 case VK_UP: 82 scroll(m_page.get(), ScrollUp, ScrollByLine); 83 break; 84 case VK_DOWN: 85 scroll(m_page.get(), ScrollDown, ScrollByLine); 86 break; 87 case VK_HOME: 88 scroll(m_page.get(), ScrollUp, ScrollByDocument); 89 break; 90 case VK_END: 91 scroll(m_page.get(), ScrollDown, ScrollByDocument); 92 break; 93 case VK_PRIOR: 94 scroll(m_page.get(), ScrollUp, ScrollByPage); 95 break; 96 case VK_NEXT: 97 scroll(m_page.get(), ScrollDown, ScrollByPage); 98 break; 99 default: 100 return false; 101 } 102 103 return true; 104} 105 106bool WebPage::platformHasLocalDataForURL(const WebCore::KURL&) 107{ 108 // FIXME: Implement 109 notImplemented(); 110 return false; 111} 112 113String WebPage::cachedResponseMIMETypeForURL(const WebCore::KURL&) 114{ 115 // FIXME: Implement 116 return String(); 117} 118 119bool WebPage::platformCanHandleRequest(const WebCore::ResourceRequest&) 120{ 121 // FIXME: Implement 122 return true; 123} 124 125} // namespace WebKit 126