Refactor the code that sends the mouse down to scrollbars.
[WebKit-https.git] / WebCore / platform / win / TemporaryLinkStubs.cpp
1 /*
2  * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #include "config.h"
27
28 #define WIN32_COMPILE_HACK
29
30 #include <windows.h>
31 #include <stdio.h>
32 #include <stdlib.h>
33 #include "CString.h"
34 #include "Node.h"
35 #include "TextField.h"
36 #include "FileChooser.h"
37 #include "Font.h"
38 #include "ListBox.h"
39 #include "IntPoint.h"
40 #include "Widget.h"
41 #include "GraphicsContext.h"
42 #include "Slider.h"
43 #include "Cursor.h"
44 #include "loader.h"
45 #include "FrameView.h"
46 #include "KURL.h"
47 #include "PlatformScrollBar.h"
48 #include "ScrollBar.h"
49 #include "JavaAppletWidget.h"
50 #include "Page.h"
51 #include "Path.h"
52 #include "PlatformMouseEvent.h"
53 #include "CookieJar.h"
54 #include "Screen.h"
55 #include "History.h"
56 #include "Language.h"
57 #include "LocalizedStrings.h"
58 #include "PlugInInfoStore.h"
59 #include "RenderTheme.h"
60 #include "FrameWin.h"
61 #include "BrowserExtensionWin.h"
62 #include "ResourceLoader.h"
63 #include "RenderThemeWin.h"
64 #include "TextBoundaries.h"
65 #include "AXObjectCache.h"
66 #include "RenderPopupMenuWin.h"
67 #include "EditCommand.h"
68 #include "Icon.h"
69 #include "IconLoader.h"
70 #include "IconDatabase.h"
71
72 using namespace WebCore;
73
74 #define notImplemented() do { \
75     char buf[256] = {0}; \
76     _snprintf(buf, sizeof(buf), "FIXME: UNIMPLEMENTED: %s:%d\n", __FILE__, __LINE__); \
77     OutputDebugStringA(buf); \
78 } while (0)
79
80 void FrameView::updateBorder() { notImplemented(); }
81 bool FrameView::passMousePressEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe) { return true; }
82 bool FrameView::passMouseMoveEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe) { return true; }
83 bool FrameView::passMouseReleaseEventToSubframe(MouseEventWithHitTestResults& mev, Frame* subframe) { return true; }
84 bool FrameView::passWheelEventToSubframe(PlatformWheelEvent& e, Frame* subframe) { return false; }
85 bool FrameView::passMousePressEventToScrollbar(MouseEventWithHitTestResults& mev) { return false; }
86
87 void Widget::enableFlushDrawing() { notImplemented(); }
88 bool Widget::isEnabled() const { notImplemented(); return 0; }
89 Widget::FocusPolicy Widget::focusPolicy() const { notImplemented(); return NoFocus; }
90 void Widget::disableFlushDrawing() { notImplemented(); }
91 GraphicsContext* Widget::lockDrawingFocus() { notImplemented(); return 0; }
92 void Widget::unlockDrawingFocus(GraphicsContext*) { notImplemented(); }
93 bool Widget::capturingMouse() const { return false; }
94 void Widget::setCapturingMouse(bool capturingMouse) { }
95 Widget* Widget::capturingTarget() { return this; }
96 Widget* Widget::capturingChild() { return 0; }
97 void Widget::setCapturingChild(Widget* w) {}
98
99 JavaAppletWidget::JavaAppletWidget(IntSize const&,Element*,WTF::HashMap<String,String> const&) { notImplemented(); }
100
101 void TextField::selectAll() { notImplemented(); }
102 void TextField::addSearchResult() { notImplemented(); }
103 int TextField::selectionStart() const { notImplemented(); return 0; }
104 bool TextField::hasSelectedText() const { notImplemented(); return 0; }
105 String TextField::selectedText() const { notImplemented(); return String(); }
106 void TextField::setAutoSaveName(String const&) { notImplemented(); }
107 bool TextField::checksDescendantsForFocus() const { notImplemented(); return false; }
108 void TextField::setSelection(int,int) { notImplemented(); }
109 void TextField::setMaxResults(int) { notImplemented(); }
110 bool TextField::edited() const { notImplemented(); return 0; }
111
112 Slider::Slider() { notImplemented(); }
113 IntSize Slider::sizeHint() const { notImplemented(); return IntSize(); }
114 void Slider::setValue(double) { notImplemented(); }
115 void Slider::setMaxValue(double) { notImplemented(); }
116 void Slider::setMinValue(double) { notImplemented(); }
117 Slider::~Slider() { notImplemented(); }
118 void Slider::setFont(WebCore::Font const&) { notImplemented(); }
119 double Slider::value() const { notImplemented(); return 0; }
120
121 void ListBox::setSelected(int,bool) { notImplemented(); }
122 IntSize ListBox::sizeForNumberOfLines(int) const { notImplemented(); return IntSize(); }
123 bool ListBox::isSelected(int) const { notImplemented(); return 0; }
124 void ListBox::appendItem(DeprecatedString const&,ListBoxItemType,bool) { notImplemented(); }
125 void ListBox::doneAppendingItems() { notImplemented(); }
126 void ListBox::setWritingDirection(TextDirection) { notImplemented(); }
127 void ListBox::setEnabled(bool) { notImplemented(); }
128 void ListBox::clear() { notImplemented(); }
129 bool ListBox::checksDescendantsForFocus() const { notImplemented(); return 0; }
130
131 FileChooser::FileChooser(Document*, RenderFileUploadControl*) { notImplemented(); }
132 FileChooser::~FileChooser() { notImplemented(); }
133 void FileChooser::openFileChooser() { notImplemented(); }
134 String FileChooser::basenameForWidth(int width) const { notImplemented(); return String(); }
135 void FileChooser::uploadControlDetaching() { notImplemented(); }
136 void FileChooser::chooseFile(const String& filename) { notImplemented(); }
137
138 Widget::FocusPolicy Slider::focusPolicy() const { notImplemented(); return NoFocus; }
139 Widget::FocusPolicy ListBox::focusPolicy() const { notImplemented(); return NoFocus; }
140 Widget::FocusPolicy TextField::focusPolicy() const { notImplemented(); return NoFocus; }
141
142 Cursor::Cursor(Image*, const IntPoint&) { notImplemented(); }
143
144 PlatformMouseEvent::PlatformMouseEvent(const CurrentEventTag&) { notImplemented(); }
145 String WebCore::searchableIndexIntroduction() { notImplemented(); return String(); }
146
147 int WebCore::findNextSentenceFromIndex(UChar const*,int,int,bool) { notImplemented(); return 0; }
148 void WebCore::findSentenceBoundary(UChar const*,int,int,int*,int*) { notImplemented(); }
149 int WebCore::findNextWordFromIndex(UChar const*,int,int,bool) { notImplemented(); return 0; }
150
151 namespace WebCore {
152
153 Vector<char> ServeSynchronousRequest(Loader*,DocLoader*,ResourceLoader*,KURL&,DeprecatedString&) { notImplemented(); return Vector<char>(); }
154
155 }
156
157 void FrameWin::focusWindow() { notImplemented(); }
158 void FrameWin::unfocusWindow() { notImplemented(); }
159 bool FrameWin::locationbarVisible() { notImplemented(); return 0; }
160 void FrameWin::issueRedoCommand(void) { notImplemented(); }
161 KJS::Bindings::Instance* FrameWin::getObjectInstanceForWidget(Widget *) { notImplemented(); return 0; }
162 KJS::Bindings::Instance* FrameWin::getEmbedInstanceForWidget(Widget *) { notImplemented(); return 0; }
163 KJS::Bindings::RootObject* FrameWin::bindingRootObject() { notImplemented(); return 0; }
164 bool FrameWin::canRedo() const { notImplemented(); return 0; }
165 bool FrameWin::canUndo() const { notImplemented(); return 0; }
166 void FrameWin::registerCommandForUndo(PassRefPtr<WebCore::EditCommand>) { notImplemented(); }
167 void FrameWin::registerCommandForRedo(PassRefPtr<WebCore::EditCommand>) { notImplemented(); }
168 bool FrameWin::runJavaScriptPrompt(String const&,String const&,String &) { notImplemented(); return 0; }
169 bool FrameWin::shouldInterruptJavaScript() { notImplemented(); return false; }
170 bool FrameWin::openURL(KURL const&) { notImplemented(); return 0; }
171 void FrameWin::print() { notImplemented(); }
172 KJS::Bindings::Instance* FrameWin::getAppletInstanceForWidget(Widget*) { notImplemented(); return 0; }
173 bool FrameWin::passMouseDownEventToWidget(Widget*) { notImplemented(); return 0; }
174 void FrameWin::issueCutCommand() { notImplemented(); }
175 void FrameWin::issueCopyCommand() { notImplemented(); }
176 void FrameWin::openURLRequest(struct WebCore::ResourceRequest const&) { notImplemented(); }
177 bool FrameWin::passWheelEventToChildWidget(Node*) { notImplemented(); return 0; }
178 void FrameWin::issueUndoCommand() { notImplemented(); }
179 String FrameWin::mimeTypeForFileName(String const&) const { notImplemented(); return String(); }
180 void FrameWin::issuePasteCommand() { notImplemented(); }
181 void FrameWin::scheduleClose() { notImplemented(); }
182 void FrameWin::markMisspellings(const WebCore::Selection&) { notImplemented(); }
183 bool FrameWin::menubarVisible() { notImplemented(); return 0; }
184 bool FrameWin::personalbarVisible() { notImplemented(); return 0; }
185 bool FrameWin::statusbarVisible() { notImplemented(); return 0; }
186 bool FrameWin::toolbarVisible() { notImplemented(); return 0; }
187 void FrameWin::issueTransposeCommand() { notImplemented(); }
188 bool FrameWin::canPaste() const { notImplemented(); return 0; }
189 bool FrameWin::canGoBackOrForward(int) const { notImplemented(); return 0; }
190 void FrameWin::issuePasteAndMatchStyleCommand() { notImplemented(); }
191 KURL FrameWin::originalRequestURL() const { return KURL(); }
192 bool FrameWin::isLoadTypeReload() { notImplemented(); return false; }
193
194 bool BrowserExtensionWin::canRunModal() { notImplemented(); return 0; }
195 void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&,struct WebCore::WindowArgs const&,Frame*&) { notImplemented(); }
196 bool BrowserExtensionWin::canRunModalNow() { notImplemented(); return 0; }
197 void BrowserExtensionWin::runModal() { notImplemented(); }
198 void BrowserExtensionWin::goBackOrForward(int) { notImplemented(); }
199 KURL BrowserExtensionWin::historyURL(int distance) { notImplemented(); return KURL(); }
200 void BrowserExtensionWin::createNewWindow(struct WebCore::ResourceRequest const&) { notImplemented(); }
201
202 void GraphicsContext::addRoundedRectClip(const IntRect& rect, const IntSize& topLeft, const IntSize& topRight,
203     const IntSize& bottomLeft, const IntSize& bottomRight) { notImplemented(); }
204 void GraphicsContext::addInnerRoundedRectClip(const IntRect& rect, int thickness) { notImplemented(); }
205
206 int WebCore::screenDepthPerComponent(const Page*) { notImplemented(); return 8; }
207 bool WebCore::screenIsMonochrome(const Page*) { notImplemented(); return false; }
208
209 /********************************************************/
210 /* Completely empty stubs (mostly to allow DRT to run): */
211 /********************************************************/
212 static Cursor localCursor;
213 const Cursor& WebCore::moveCursor() { return localCursor; }
214
215 bool AXObjectCache::gAccessibilityEnabled = false;
216
217 bool WebCore::historyContains(DeprecatedString const&) { return false; }
218 String WebCore::submitButtonDefaultLabel() { return "Submit"; }
219 String WebCore::inputElementAltText() { return DeprecatedString(); }
220 String WebCore::resetButtonDefaultLabel() { return "Reset"; }
221 String WebCore::fileButtonChooseFileLabel() { return "Browse..."; }
222 String WebCore::fileButtonNoFileSelectedLabel() { return String(); }
223
224 String WebCore::defaultLanguage() { return "en"; }
225
226 void WebCore::findWordBoundary(UChar const* str,int len,int position,int* start, int* end) {*start=position; *end=position; }
227
228 PluginInfo*PlugInInfoStore::createPluginInfoForPluginAtIndex(unsigned) { return 0;}
229 unsigned PlugInInfoStore::pluginCount() const { return 0; }
230 bool WebCore::PlugInInfoStore::supportsMIMEType(const WebCore::String&) { return false; }
231 void WebCore::refreshPlugins(bool) { }
232
233 void WebCore::ResourceLoader::assembleResponseHeaders() const { }
234 void WebCore::ResourceLoader::retrieveCharset() const { }
235
236 void FrameWin::restoreDocumentState() { }
237 void FrameWin::partClearedInBegin() { }
238 void FrameWin::createEmptyDocument() { }
239 String FrameWin::overrideMediaType() const { return String(); }
240 Range* FrameWin::markedTextRange() const { return 0; }
241 bool FrameWin::passSubframeEventToSubframe(WebCore::MouseEventWithHitTestResults&, Frame*) { return false; }
242 bool FrameWin::lastEventIsMouseUp() const { return false; }
243 void FrameWin::addMessageToConsole(String const&,unsigned int,String const&) { }
244 bool FrameWin::shouldChangeSelection(const WebCore::Selection&,const WebCore::Selection&,WebCore::EAffinity,bool) const { return true; }
245 void FrameWin::respondToChangedSelection(const WebCore::Selection&,bool) { }
246 static int frameNumber = 0;
247 Frame* FrameWin::createFrame(KURL const&,String const&,Element*,String const&) { return 0; }
248 void FrameWin::saveDocumentState() { }
249 void FrameWin::clearUndoRedoOperations(void) { }
250 String FrameWin::incomingReferrer() const { return String(); }
251 void FrameWin::markMisspellingsInAdjacentWords(WebCore::VisiblePosition const&) { }
252 void FrameWin::respondToChangedContents(const Selection&) { }
253 void FrameWin::handledOnloadEvents() { }
254 Plugin* FrameWin::createPlugin(Element*, const KURL&, const Vector<String>&, const Vector<String>&, const String&) { return 0; }
255 ObjectContentType FrameWin::objectContentType(const KURL&, const String&) { return ObjectContentNone; }
256
257 BrowserExtensionWin::BrowserExtensionWin(WebCore::Frame*) { }
258 void BrowserExtensionWin::setTypedIconURL(KURL const&, const String&) { }
259 void BrowserExtensionWin::setIconURL(KURL const&) { }
260 int BrowserExtensionWin::getHistoryLength() { return 0; }
261
262 namespace WebCore {
263
264 bool CheckIfReloading(WebCore::DocLoader*) { return false; }
265 void CheckCacheObjectStatus(DocLoader*, CachedResource*) { }
266
267 }
268
269 HINSTANCE Page::s_instanceHandle = 0;
270
271 void Widget::setEnabled(bool) { }
272 void Widget::paint(GraphicsContext*,IntRect const&) { }
273 void Widget::setIsSelected(bool) { }
274 void Widget::invalidate() { }
275 void Widget::invalidateRect(const IntRect& r) { }
276 void ScrollView::addChild(Widget*,int,int) { }
277 void ScrollView::removeChild(Widget*) { }
278 void ScrollView::scrollPointRecursively(int x, int y) { }
279 bool ScrollView::inWindow() const { return true; }
280 void ScrollView::paint(GraphicsContext*, const IntRect&) { }
281 void ScrollView::wheelEvent(PlatformWheelEvent&) { }
282 void ScrollView::themeChanged() { }
283
284 void GraphicsContext::setShadow(IntSize const&,int,Color const&) { }
285 void GraphicsContext::clearShadow() { }
286 void GraphicsContext::beginTransparencyLayer(float) { }
287 void GraphicsContext::endTransparencyLayer() { }
288 void GraphicsContext::clearRect(const FloatRect&) { }
289 void GraphicsContext::strokeRect(const FloatRect&, float) { }
290 void GraphicsContext::setLineWidth(float) { }
291 void GraphicsContext::setLineCap(LineCap) { }
292 void GraphicsContext::setLineJoin(LineJoin) { }
293 void GraphicsContext::setMiterLimit(float) { }
294 void GraphicsContext::setAlpha(float) { }
295 void GraphicsContext::setCompositeOperation(CompositeOperator) { }
296 void GraphicsContext::clip(const Path&) { }
297 void GraphicsContext::rotate(float) { }
298 void GraphicsContext::scale(const FloatSize&) { }
299
300 Path::Path(){ }
301 Path::~Path(){ }
302 Path::Path(const Path&){ }
303 bool Path::contains(const FloatPoint&, WindRule rule) const { return false; }
304 void Path::translate(const FloatSize&){ }
305 FloatRect Path::boundingRect() const { return FloatRect(); }
306 Path& Path::operator=(const Path&){ return*this; }
307 void Path::clear() { }
308 void Path::moveTo(const FloatPoint&) { }
309 void Path::addLineTo(const FloatPoint&) { }
310 void Path::addQuadCurveTo(const FloatPoint&, const FloatPoint&) { }
311 void Path::addBezierCurveTo(const FloatPoint&, const FloatPoint&, const FloatPoint&) { }
312 void Path::addArcTo(const FloatPoint&, const FloatPoint&, float) { }
313 void Path::closeSubpath() { }
314 void Path::addArc(const FloatPoint&, float, float, float, bool) { }
315 void Path::addRect(const FloatRect&) { }
316 void Path::addEllipse(const FloatRect&) { }
317
318 TextField::TextField(TextField::Type type) 
319
320     m_type = type;
321 }
322
323 TextField::~TextField() { }
324 void TextField::setFont(WebCore::Font const&) { }
325 void TextField::setAlignment(HorizontalAlignment) { }
326 void TextField::setWritingDirection(TextDirection) { }
327 int TextField::maxLength() const { return 0; }
328 void TextField::setMaxLength(int) { }
329 String TextField::text() const { return String(); }
330 void TextField::setText(String const&) { }
331 int TextField::cursorPosition() const { return 0; }
332 void TextField::setCursorPosition(int) { }
333 void TextField::setEdited(bool) { }
334 void TextField::setReadOnly(bool) { }
335 void TextField::setPlaceholderString(String const&) { }
336 void TextField::setColors(Color const&,Color const&) { }
337 IntSize TextField::sizeForCharacterWidth(int) const { return IntSize(); }
338 int TextField::baselinePosition(int) const { return 0; }
339 void TextField::setLiveSearch(bool) { }
340
341 PlatformScrollBar::PlatformScrollBar(ScrollBarClient* client, ScrollBarOrientation orientation, ScrollBarControlSize controlSize) : ScrollBar(client, orientation, controlSize) { }
342 PlatformScrollBar::~PlatformScrollBar() { }
343 int PlatformScrollBar::width() const { return 0; }
344 int PlatformScrollBar::height() const { return 0; }
345 void PlatformScrollBar::setEnabled(bool) { }
346 void PlatformScrollBar::paint(GraphicsContext*, const IntRect& damageRect) { }
347 void PlatformScrollBar::updateThumbPosition() { }
348 void PlatformScrollBar::updateThumbProportion() { }
349 void PlatformScrollBar::setRect(const IntRect&) { }
350
351 ScrollBar::ScrollBar(ScrollBarClient*, ScrollBarOrientation, ScrollBarControlSize) { }
352 void ScrollBar::setSteps(int, int) { }
353 bool ScrollBar::scroll(ScrollDirection, ScrollGranularity, float) { return false; }
354 bool ScrollBar::setValue(int) { return false; }
355 void ScrollBar::setProportion(int, int) { }
356
357 ListBox::ListBox() { }
358 ListBox::~ListBox() { }
359 void ListBox::setSelectionMode(ListBox::SelectionMode) { }
360 void ListBox::setFont(WebCore::Font const&) { }
361
362 Color WebCore::focusRingColor() { return 0xFF0000FF; }
363 void WebCore::setFocusRingColorChangeFunction(void (*)()) { }
364
365 void Frame::setNeedsReapplyStyles() { }
366
367 void Image::drawTiled(GraphicsContext*, const FloatRect&, const FloatRect&, TileRule, TileRule, CompositeOperator) { }
368
369 RenderPopupMenuWin::~RenderPopupMenuWin() { notImplemented(); }
370 void RenderPopupMenuWin::clear() { notImplemented(); }
371 void RenderPopupMenuWin::populate() { notImplemented(); }
372 void RenderPopupMenuWin::showPopup(const IntRect&, FrameView*, int index) { notImplemented(); }
373 void RenderPopupMenuWin::hidePopup() { notImplemented(); }
374 void RenderPopupMenuWin::addSeparator() { notImplemented(); }
375 void RenderPopupMenuWin::addGroupLabel(HTMLOptGroupElement*) { notImplemented(); }
376 void RenderPopupMenuWin::addOption(HTMLOptionElement*) { notImplemented(); }
377
378 void RenderThemeWin::systemFont(int propId, FontDescription& fontDescription) const {}
379 bool RenderThemeWin::paintMenuList(RenderObject *, const RenderObject::PaintInfo&, const IntRect&) { return false; }
380 void RenderThemeWin::adjustMenuListStyle(CSSStyleSelector*, RenderStyle*, Element*) const { }
381
382 Icon::Icon() { notImplemented(); }
383 Icon::~Icon() { notImplemented(); }
384 PassRefPtr<Icon> Icon::newIconForFile(const String& filename) { notImplemented(); return PassRefPtr<Icon>(new Icon()); }
385 void Icon::paint(GraphicsContext*, const IntRect&) { notImplemented(); }
386
387 void IconLoader::stopLoading() { notImplemented(); } 
388 void IconLoader::startLoading() { notImplemented(); } 
389 IconLoader* IconLoader::createForFrame(Frame *frame) { return 0; } 
390
391 bool IconDatabase::isIconExpiredForIconURL(const String& url) { return false; }
392 bool IconDatabase::hasEntryForIconURL(const String& url) { return false; }
393 IconDatabase* IconDatabase::sharedIconDatabase() { return 0; }
394 bool IconDatabase::setIconURLForPageURL(const String& iconURL, const String& pageURL) { return false; }
395