blob: 74712f5815c00e109930eb61af4c116d962e0d0e [file] [log] [blame]
/*
**
** Copyright 2007, The Android Open Source Project
**
** Licensed under the Apache License, Version 2.0 (the "License");
** you may not use this file except in compliance with the License.
** You may obtain a copy of the License at
**
** http://www.apache.org/licenses/LICENSE-2.0
**
** Unless required by applicable law or agreed to in writing, software
** distributed under the License is distributed on an "AS IS" BASIS,
** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
** See the License for the specific language governing permissions and
** limitations under the License.
*/
#include "config.h"
#define ANDROID_COMPILE_HACK
#include <stdio.h>
#include <stdlib.h>
#include "AXObjectCache.h"
#include "CachedPage.h"
#include "CachedResource.h"
#include "CookieJar.h"
#include "ContextMenu.h"
#include "ContextMenuItem.h"
#include "Clipboard.h"
#include "CString.h"
#include "Cursor.h"
#include "DocumentFragment.h"
#include "DocumentLoader.h"
#include "EditCommand.h"
#include "Editor.h"
#include "Font.h"
#include "FrameLoader.h"
#include "FrameLoadRequest.h"
#include "FrameView.h"
#include "GraphicsContext.h"
#include "HTMLFrameOwnerElement.h"
#include "HTMLKeygenElement.h"
#include "History.h"
#include "Icon.h"
#include "IconDatabase.h"
#include "IconLoader.h"
#include "IntPoint.h"
#include "KURL.h"
#include "Language.h"
#include "loader.h"
#include "LocalizedStrings.h"
#include "MainResourceLoader.h"
#include "MIMETypeRegistry.h"
#include "Node.h"
#include "PageCache.h"
#include "Pasteboard.h"
#include "Path.h"
#include "PlatformScrollBar.h"
#include "PluginInfoStore.h"
#include "ResourceError.h"
#include "ResourceHandle.h"
#include "ResourceLoader.h"
#include "Screen.h"
#include "ScrollBar.h"
#include "SmartReplace.h"
#include "Widget.h"
#undef LOG
#define LOG_TAG "WebCore"
#include "utils/Log.h"
using namespace WebCore;
//static inline void notImplemented() { LOGV("LinkStubs: Not Implemented %s\n", __PRETTY_FUNCTION__); }
//static inline void notImplemented(const char name[]) { LOGV("LinkStubs: Not Implemented %s\n", name); }
static inline void verifiedOk() { } // not a problem that it's not implemented
// This function is called when the frame view has changed the state of it's border.
// iFrames, which are have a FrameView, are drawn with a 1px left/right border and 2px top/bottom border
// Check function _shouldDrawBorder in WebFrameView.mm
// We don't draw borders unless css draws them.
// void FrameView::updateBorder() { verifiedOk(); }
//int WebCore::screenDepthPerComponent(Widget*) { ASSERT(0); notImplemented(); return 0; }
//bool WebCore::screenIsMonochrome(Widget*) { ASSERT(0); notImplemented(); return false; }
/********************************************************/
/* Completely empty stubs (mostly to allow DRT to run): */
/********************************************************/
// This value turns on or off the Mac specific Accessibility support.
// bool AXObjectCache::gAccessibilityEnabled = false;
// This function is used by Javascript to find out what the default language
// the user has selected. It is used by the JS object Navigator.language
// I guess this information should be mapped with the Accept-Language: HTTP header.
String WebCore::defaultLanguage() { verifiedOk(); return "en"; }
namespace WebCore {
#if !defined(ANDROID_PLUGINS)
// If plugins support is turned on, don't use these stubs.
// Except for supportsMIMEType(), these Plugin functions are used by javascript's
// navigator.plugins[] object to provide the list of available plugins. This is most
// often used with to check to see if the browser supports Flash or which video
// codec to use.
// The supportsMIMEType() is used by the Frame to determine if a full screen instance
// of a plugin can be used to render a mimetype that is not native to the browser.
PluginInfo* PluginInfoStore::createPluginInfoForPluginAtIndex(unsigned) { ASSERT(0); return 0;}
unsigned PluginInfoStore::pluginCount() const { verifiedOk(); return 0; }
// FIXME, return false for now.
String PluginInfoStore::pluginNameForMIMEType(const String& ) { notImplemented(); return String(); }
bool PluginInfoStore::supportsMIMEType(const String& ) { verifiedOk(); return false; }
void refreshPlugins(bool) { verifiedOk(); }
#endif // !defined(ANDROID_PLUGINS)
// This function tells the bridge that a resource was loaded from the cache and thus
// the app may update progress with the amount of data loaded.
void CheckCacheObjectStatus(DocLoader*, CachedResource*) { ASSERT(0); notImplemented();}
// This class is used in conjunction with the File Upload form element, and
// therefore relates to the above. When a file has been selected, an icon
// representing the file type can be rendered next to the filename on the
// web page. The icon for the file is encapsulated within this class.
Icon::Icon() { notImplemented(); }
Icon::~Icon() { }
PassRefPtr<Icon> Icon::newIconForFile(const String& filename){ notImplemented(); return PassRefPtr<Icon>(new Icon()); }
void Icon::paint(GraphicsContext*, const IntRect&) { }
// *** The following strings should be localized *** //
// The following functions are used to fetch localized text for HTML form
// elements submit and reset. These strings are used when the page author
// has not specified any text for these buttons.
String submitButtonDefaultLabel() { verifiedOk(); return "Submit"; }
String resetButtonDefaultLabel() { verifiedOk(); return "Reset"; }
// The alt text for an input element is not used visually, but rather is
// used for accessability - eg reading the web page. See
// HTMLInputElement::altText() for more information.
String inputElementAltText() { notImplemented(); return String(); }
// This is the string that appears before an input box when the HTML element
// <ISINDEX> is used. The returned string is used if no PROMPT attribute is
// provided.
// note: Safari and FireFox use (too long for us imho) "This is a searchable index. Enter search keywords:"
String searchableIndexIntroduction() { verifiedOk(); return String("Enter search:"); }
}
// This function provides the default value for the CSS property:
// -webkit-focus-ring-color
// It is also related to the CSS property outline-color:
Color WebCore::focusRingColor() { verifiedOk(); return 0xFF0000FF; }
// The following functions are used on the Mac to register for and handle
// platform colour changes. The later function simply tells the view to
// reapply style and relayout.
void WebCore::setFocusRingColorChangeFunction(void (*)()) { verifiedOk(); }
// LocalizedStrings
String WebCore::contextMenuItemTagOpenLinkInNewWindow() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagDownloadLinkToDisk() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCopyLinkToClipboard() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagOpenImageInNewWindow() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagDownloadImageToDisk() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCopyImageToClipboard() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagOpenFrameInNewWindow() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCopy() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagGoBack() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagGoForward() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagStop() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagReload() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCut() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagPaste() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagNoGuessesFound() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagIgnoreSpelling() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagLearnSpelling() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagSearchWeb() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagLookUpInDictionary() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagOpenLink() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagIgnoreGrammar() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagSpellingMenu() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagShowSpellingPanel(bool show) { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCheckSpelling() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCheckSpellingWhileTyping() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagCheckGrammarWithSpelling() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagFontMenu() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagBold() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagItalic() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagUnderline() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagOutline() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagWritingDirectionMenu() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagDefaultDirection() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagLeftToRight() { ASSERT(0); return String(); }
String WebCore::contextMenuItemTagRightToLeft() { ASSERT(0); return String(); }
// FIXME, no support for spelling yet.
Pasteboard* Pasteboard::generalPasteboard() { return new Pasteboard(); }
void Pasteboard::writeSelection(Range*, bool canSmartCopyOrDelete, Frame*) { notImplemented(); }
void Pasteboard::writeURL(const KURL&, const String&, Frame*) { notImplemented(); }
void Pasteboard::clear() { notImplemented(); }
bool Pasteboard::canSmartReplace() { notImplemented(); return false; }
PassRefPtr<DocumentFragment> Pasteboard::documentFragment(Frame*, PassRefPtr<Range>, bool allowPlainText, bool& chosePlainText) { notImplemented(); return 0; }
String Pasteboard::plainText(Frame* frame) { notImplemented(); return String(); }
Pasteboard::Pasteboard() { notImplemented(); }
Pasteboard::~Pasteboard() { notImplemented(); }
ContextMenu::ContextMenu(const HitTestResult& result) : m_hitTestResult(result) { ASSERT(0); notImplemented(); }
ContextMenu::~ContextMenu() { ASSERT(0); notImplemented(); }
void ContextMenu::appendItem(ContextMenuItem&) { ASSERT(0); notImplemented(); }
void ContextMenu::setPlatformDescription(PlatformMenuDescription menu) { ASSERT(0); m_platformDescription = menu; }
PlatformMenuDescription ContextMenu::platformDescription() const { ASSERT(0); return m_platformDescription; }
ContextMenuItem::ContextMenuItem(PlatformMenuItemDescription) { ASSERT(0); notImplemented(); }
ContextMenuItem::ContextMenuItem(ContextMenu*) { ASSERT(0); notImplemented(); }
ContextMenuItem::ContextMenuItem(ContextMenuItemType type, ContextMenuAction action, const String& title, ContextMenu* subMenu) { ASSERT(0); notImplemented(); }
ContextMenuItem::~ContextMenuItem() { ASSERT(0); notImplemented(); }
PlatformMenuItemDescription ContextMenuItem::releasePlatformDescription() { ASSERT(0); notImplemented(); return m_platformDescription; }
ContextMenuItemType ContextMenuItem::type() const { ASSERT(0); notImplemented(); return ActionType; }
void ContextMenuItem::setType(ContextMenuItemType) { ASSERT(0); notImplemented(); }
ContextMenuAction ContextMenuItem::action() const { ASSERT(0); notImplemented(); return ContextMenuItemTagNoAction; }
void ContextMenuItem::setAction(ContextMenuAction) { ASSERT(0); notImplemented(); }
String ContextMenuItem::title() const { ASSERT(0); notImplemented(); return String(); }
void ContextMenuItem::setTitle(const String&) { ASSERT(0); notImplemented(); }
PlatformMenuDescription ContextMenuItem::platformSubMenu() const { ASSERT(0); notImplemented(); return 0; }
void ContextMenuItem::setSubMenu(ContextMenu*) { ASSERT(0); notImplemented(); }
void ContextMenuItem::setChecked(bool) { ASSERT(0); notImplemented(); }
void ContextMenuItem::setEnabled(bool) { ASSERT(0); notImplemented(); }
namespace WebCore {
float userIdleTime() { notImplemented(); return 0; }
// systemBeep() is called by the Editor to indicate that there was nothing to copy, and may be called from
// other places too.
void systemBeep() { notImplemented(); }
}
// functions new to Jun-07 tip of tree merge:
// void WebCore::CachedPage::close() {}
//void WebCore::Frame::print() {}
// void WebCore::Frame::issueTransposeCommand() {}
//void WebCore::Frame::cleanupPlatformScriptObjects() {}
void WebCore::Frame::dashboardRegionsChanged() {}
//bool WebCore::Frame::isCharacterSmartReplaceExempt(unsigned short, bool) { return false; }
void* WebCore::Frame::dragImageForSelection() { return NULL; }
WebCore::String WebCore::MIMETypeRegistry::getMIMETypeForExtension(WebCore::String const&) {
return WebCore::String();
}
void WebCore::Pasteboard::writeImage(WebCore::Node*, WebCore::KURL const&, WebCore::String const&) {}
namespace WebCore {
IntSize dragImageSize(void*) { return IntSize(0, 0); }
void deleteDragImage(void*) {}
void* createDragImageFromImage(Image*) { return NULL; }
void* dissolveDragImageToFraction(void*, float) { return NULL; }
void* createDragImageIconForCachedImage(CachedImage*) { return NULL; }
Cursor dummyCursor;
const Cursor& zoomInCursor() { return dummyCursor; }
const Cursor& zoomOutCursor() { return dummyCursor; }
const Cursor& notAllowedCursor() { return dummyCursor; }
void* scaleDragImage(void*, FloatSize) { return NULL; }
String searchMenuRecentSearchesText() { return String(); }
String searchMenuNoRecentSearchesText() { return String(); }
String searchMenuClearRecentSearchesText() { return String(); }
Vector<String> supportedKeySizes() { notImplemented(); return Vector<String>(); }
String signedPublicKeyAndChallengeString(unsigned int, String const&, WebCore::KURL const&) { return String(); }
}
// added for Nov-16-07 ToT integration
namespace WebCore {
void Frame::clearPlatformScriptObjects() { notImplemented(); }
}
// functions new to Feb-19 tip of tree merge:
namespace WebCore {
// isCharacterSmartReplaceExempt is defined in SmartReplaceICU.cpp; in theory, we could use that one
// but we don't support all of the required icu functions
bool isCharacterSmartReplaceExempt(UChar32 , bool ) { notImplemented(); return false; }
}
int MakeDataExecutable;
// functions new to Mar-2 tip of tree merge:
String KURL::fileSystemPath() const { notImplemented(); return String(); }