Fix the Qt build.
[WebKit-https.git] / WebCore / ChangeLog
1 2008-03-13  Simon Hausmann  <hausmann@webkit.org>
2
3         Fix the Qt build.
4
5         * bridge/qt/qt_instance.cpp:
6         (KJS::Bindings::QtInstance::getQtInstance):
7         (KJS::Bindings::QtInstance::getRuntimeObject):
8         * bridge/qt/qt_instance.h:
9         (KJS::Bindings::QtInstance::create):
10         * bridge/qt/qt_runtime.cpp:
11         (KJS::Bindings::convertQVariantToValue):
12         (KJS::Bindings::QtConnectionObject::execute):
13         * page/qt/FrameQt.cpp:
14         (WebCore::Frame::createScriptInstanceForWidget):
15
16 2008-03-12  Sam Weinig  <sam@webkit.org>
17
18         Reviewed by Darin Adler.
19
20         Fix <rdar://problem/5784773>
21         Crash loading QT movies @ apple.com/ipodtouch/features.html with a PAC file (WebKitThreadingException)
22
23         Make bridged RuntimeObjects get collected on the main thread only. This is necessary
24         because clients of the bridged objects are unlikely to prepared for a collection on 
25         non-main thread, which can happen with a PAC file.
26
27         * bridge/runtime_object.cpp:
28         (RuntimeObjectImp::RuntimeObjectImp):
29
30 2008-03-12  Adam Roben  <aroben@apple.com>
31
32         Fix Bug 17815: Inspector's DOM tree should descend into subframes
33
34         <http://bugs.webkit.org/show_bug.cgi?id=17815>
35
36         Reviewed by Tim.
37
38         * page/inspector/DocumentPanel.js:
39         (WebInspector.DocumentPanel.revealNode): Changed to provide
40         _isAncestorIncludingParentFramesWithinPanel and
41         _parentNodeOrFrameElementWithinPanel for the isAncestor and getParent
42         parameters to findTreeElement so that parent frames will be searched.
43         (WebInspector.DocumentPanel.updateBreadcrumb):
44           - Changed while loop to for loop
45           - Use _parentNodeOrFrameElementWithinPanel instead of
46             Node.parentNode to move to the next node
47           - The loop now ends when we reach the DocumentPanel's document node
48           - Traversal past other Document nodes is now allowed
49           - We add the "start" class to the final crumb after the loop exits
50         (WebInspector.DocumentPanel._getDocumentForNode): Added. Simple helper
51         that returns the node itself if the node is a Document node, or the
52         node's ownerDocument otherwise.
53         (WebInspector.DocumentPanel._parentNodeOrFrameElementWithinPanel):
54         Added. Returns the node's parent node or, in the case of a Document
55         node, the node's window's owning frame element, but will not return a
56         node that is in a parent frame of the DocumentPanel's Document.
57         (WebInspector.DocumentPanel._isAncestorIncludingParentFramesWithinPanel):
58         Added. Returns true if a is an ancestor of b if a is an ancestor of a
59         frame element whose subframe(s) contain b.
60         (WebInspector.DOMNodeTreeElement): We now consider ourselves to have
61         children if we have a contentDocument.
62         (WebInspector.DOMNodeTreeElement.onpopulate): Moved the appendChild
63         loop into a function so that we can add both children of our
64         contentDocument and children of our node to the tree.
65         (WebInspector.DOMNodeTreeElement.ondblclick): Changed so that we get
66         the rootDOMNode by traversing the tree outline hierarchy instead of
67         the DOM hierarchy so that we can easily jump up to a parent frame.
68
69 2008-03-12  Adam Roben  <aroben@apple.com>
70
71         Update the styles/metrics panes and breadcrumb after editing DOM
72         attributes
73
74         Reviewed by Tim.
75
76         * page/inspector/DocumentPanel.js:
77         (WebInspector.DocumentPanel.set focusedDOMNode): Moved code to update
78         the parts of the DocumentPanel other than the DOM tree into a new
79         function, _focusedNodeChanged.
80         (WebInspector.DocumentPanel._focusedNodeChanged): Added. The
81         forceUpdate parameter specifies whether the update should occur even
82         if the focused node hasn't changed since the last update.
83         (WebInspector.DocumentPanel.updateBreadcrumb): Added a forceUpdate
84         parameter. If forceUpdate is true, we always rebuild the breadcrumbs.
85         (WebInspector.DocumentPanel.updateStyles): Added a forceUpdate
86         parameter. If forceUpdate is true, we always rebuild the styles pane.
87         (WebInspector.DOMNodeTreeElement._attributeEditingCommitted): Added a
88         call to DocumentPanel._focusedNodeChanged. We have to force the update
89         because we haven't changed the focused node (the attributes of the
90         node have changed).
91         * page/inspector/StylesSidebarPane.js:
92         (WebInspector.StylesSidebarPane.update): Added a forceUpdate
93         parameter. If forceUpdate is true we always rebuild the styles.
94
95 2008-03-12  Mark Rowe  <mrowe@apple.com>
96
97         Further Gtk and Qt build fixes.
98
99         * bridge/runtime.cpp:
100         (KJS::Bindings::Instance::createRuntimeObject): Adapt Qt-only code for change to PassRefPtr.
101         * page/gtk/FrameGtk.cpp: Add missing include.
102
103 2008-03-12  Mark Rowe  <mrowe@apple.com>
104
105         Fix Gtk and Qt builds.
106
107         * page/gtk/FrameGtk.cpp:
108         * page/qt/FrameQt.cpp:
109
110 2008-03-12  Mark Rowe  <mrowe@apple.com>
111
112         Mac build fix.
113
114         * WebCore.base.exp:  Remove symbol.
115
116 2008-03-12  Steve Falkenburg  <sfalken@apple.com>
117
118         Build fix.
119
120         * page/win/FrameWin.cpp:
121
122 2008-03-12  Steve Falkenburg  <sfalken@apple.com>
123
124         Build fix.
125
126         * plugins/win/PluginViewWin.cpp:
127         (WebCore::PluginView::bindingInstance):
128
129 2008-03-12  Darin Adler  <darin@apple.com>
130
131         Reviewed by Anders.
132
133         - http://bugs.webkit.org/show_bug.cgi?id=17640
134           eliminate WebCoreFrameBridge
135
136         * WebCore.base.exp: Added more exports, needed by code moved from WebCoreFrameBridge
137         to WebFrame in WebKit.
138         * WebCore.xcodeproj/project.pbxproj: Added more headers, same reason. Also deleted
139         WebCoreFrameBridge.h and WebCoreFrameBridge.mm.
140
141         * page/Frame.cpp:
142         (WebCore::Frame::Frame): Added call to initJavaJSBindings(), formerly handled by
143         the WebCoreFrameBridge.
144         * page/Frame.h: Added initJavaJSBindings function.
145
146         * page/mac/FrameMac.mm:
147         (WebCore::updateRenderingForBindings): Moved here from WebCoreFrameBridge.
148         (WebCore::Frame::initJavaJSBindings): Ditto; code was in the init function.
149
150         * page/mac/WebCoreFrameBridge.h: Removed.
151         * page/mac/WebCoreFrameBridge.mm: Removed.
152
153 2008-03-12  Sam Weinig  <sam@webkit.org>
154
155         Reviewed by Anders Carlsson.
156
157         Don't go through the Document just to get the frame Element.
158
159         * page/DOMWindow.cpp:
160         (WebCore::DOMWindow::frameElement):
161
162 2008-03-12  Anders Carlsson  <andersca@apple.com>
163
164         Reviewed by Geoff and Sam.
165
166         More Instance cleanup:
167         
168         * Make Instance inherit from RefCounted instead of doing its own refcounting.        
169         * Make all Instance subclasses private, add static create methods.         
170         * Have Instance start out with a refcount of 1.
171         * Get rid of Instance::createBindingForLanguageInstance and call the individual 
172           instance constructor methods instead.
173         * Fix many methods to take and return PassRefPtr<Instance> to ensure that the
174           refcounting is done correctly.
175          
176         * bridge/c/c_instance.h:
177         (KJS::Bindings::CInstance::create):
178         * bridge/c/c_utility.cpp:
179         (KJS::Bindings::convertNPVariantToValue):
180         * bridge/jni/jni_instance.cpp:
181         (JavaInstance::invokeMethod):
182         * bridge/jni/jni_instance.h:
183         (KJS::Bindings::JavaInstance::create):
184         * bridge/jni/jni_jsobject.cpp:
185         (JavaJSObject::convertJObjectToValue):
186         * bridge/jni/jni_runtime.cpp:
187         (JavaField::valueFromInstance):
188         (JavaArray::valueAt):
189         * bridge/objc/objc_instance.h:
190         (KJS::Bindings::ObjcInstance::create):
191         * bridge/objc/objc_utility.mm:
192         (KJS::Bindings::convertObjcValueToValue):
193         * bridge/qt/qt_instance.cpp:
194         (KJS::Bindings::QtRuntimeObjectImp::QtRuntimeObjectImp):
195         (KJS::Bindings::QtInstance::getQtInstance):
196         (KJS::Bindings::QtInstance::getRuntimeObject):
197         * bridge/qt/qt_instance.h:
198         * bridge/runtime.cpp:
199         (KJS::Bindings::Instance::Instance):
200         (KJS::Bindings::Instance::createRuntimeObject):
201         * bridge/runtime.h:
202         * bridge/runtime_object.cpp:
203         (RuntimeObjectImp::RuntimeObjectImp):
204         * bridge/runtime_object.h:
205         * page/Frame.h:
206         * page/mac/FrameMac.mm:
207         (WebCore::Frame::createScriptInstanceForWidget):
208         * page/win/FrameWin.cpp:
209         (WebCore::Frame::createScriptInstanceForWidget):
210         * plugins/PluginView.h:
211         * plugins/win/PluginViewWin.cpp:
212         (WebCore::PluginView::bindingInstance):
213
214 2008-03-12  Dan Bernstein  <mitz@apple.com>
215
216         Suggested by Darin Adler. Reviewed by Dave Hyatt.
217
218         - speed up BidiIterator::direction()
219
220         * rendering/bidi.cpp:
221         (WebCore::BidiIterator::current): Made inline and corrected the
222         out-of-bounds condition to work with 0-length text and offsets beyond
223         the end of the text.
224         (WebCore::BidiIterator::direction): Changed to call current() and not
225         call the virtual method isListMarker() most of the time.
226         (WebCore::addMidpoint): Removed unnecessary null-check of smidpoints.
227         (WebCore::appendRunsForObject): Ditto.
228
229 2008-03-12  Adam Roben  <aroben@apple.com>
230
231         Make URLs not be underlined while editing them in the DOM view
232
233         Reviewed by Tim.
234
235         * page/inspector/inspector.css:
236
237 2008-03-12  Adam Roben  <aroben@apple.com>
238
239         Part of Bug 17224: DOM nodes/attributes should be editable
240
241         <http://bugs.webkit.org/show_bug.cgi?id=17224>
242         <rdar://problem/5732825>
243
244         We now start editing if the user single-clicks on an attribute,
245         attribute value, or text node while the parent element is selected.
246         Previously, we started editing on double-click regardless of the
247         selection state of the element.
248
249         URLs in the DOM tree are now followed on Alt/Option-click, rather than
250         on just click.
251
252         Reviewed by Tim.
253
254         * English.lproj/InspectorLocalizedStrings.js: Added four new localized
255         strings.
256         * page/inspector/DocumentPanel.js:
257         (WebInspector.DOMNodeTreeElement.onattach): Call new
258         _makeURLSActivateOnModifiedClick.
259         (WebInspector.DOMNodeTreeElement._makeURLsActivateOnModifiedClick):
260         Added. Changes the tooltip of each link in this element to indicate
261         that Alt/Option-click will follow the URL, and sets the
262         followOnAltClick property on each link.
263         (WebInspector.DOMNodeTreeElement.onselect): Mark that we're being
264         selected.
265         (WebInspector.DOMNodeTreeElement.onmousedown): If we're not currently
266         being selected, start editing.
267         (WebInspector.DOMNodeTreeElement.ondblclick): We no longer start
268         editing here. We block re-rooting of the tree if we're currently
269         editing.
270         (WebInspector.DOMNodeTreeElement._startEditing):
271           - Don't do anything if we're not focused
272           - Pass the event down to _startEditingAttribute.
273         (WebInspector.DOMNodeTreeElement._startEditingAttribute): Don't do
274         anything if the event target is a URL and the Alt/Option key is
275         pressed -- in this case we want to follow the link.
276         (WebInspector.DOMNodeTreeElement._updateTitle): Call
277         _makeURLsActivateOnClick again since the anchor elements have all been
278         recreated.
279         * page/inspector/inspector.js:
280         (WebInspector.documentClick): If the anchor as a followOnAltClick
281         property and the Alt/Option key is not pressed, do nothing.
282
283 2008-03-12  Ada Chan  <adachan@apple.com>
284
285         Fixed the initial value of zoom factor.
286
287         Reviewed by Adam.
288
289         * page/Frame.cpp:
290         (WebCore::FramePrivate::FramePrivate):
291
292 2008-03-12  David Hyatt  <hyatt@apple.com>
293
294         Make full page zoom vaguely work.  This patch uses the CSS transform system to turn on full page zoom at the
295         document level.  There are many many bugs that I'm going to file to track all the issues (most of the issues
296         are just bugs with transforms themselves).
297
298         Reviewed by Adam Roben
299
300         * css/CSSStyleSelector.cpp:
301         (WebCore::CSSStyleSelector::applyProperty):
302         (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
303         * dom/Document.cpp:
304         (WebCore::Document::recalcStyle):
305         * page/Frame.cpp:
306         (WebCore::Frame::shouldApplyTextZoom):
307         (WebCore::Frame::shouldApplyPageZoom):
308         * page/Frame.h:
309         * rendering/RenderLayer.cpp:
310         (WebCore::RenderLayer::updateLayerPositions):
311         (WebCore::RenderLayer::setHasVisibleContent):
312         (WebCore::RenderLayer::paintLayer):
313         (WebCore::RenderLayer::hitTestLayer):
314         * rendering/RenderLayer.h:
315
316 2008-03-12  David Hyatt  <hyatt@apple.com>
317
318         Make the zoom factor a float and not a percent.
319
320         Reviewed by antti
321
322         * WebCore.base.exp:
323         * css/CSSStyleSelector.cpp:
324         (WebCore::CSSStyleSelector::applyProperty):
325         (WebCore::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
326         * page/Frame.cpp:
327         (WebCore::Frame::zoomFactor):
328         (WebCore::Frame::setZoomFactor):
329         * page/Frame.h:
330         * page/FramePrivate.h:
331         * svg/SVGSVGElement.cpp:
332         (WebCore::SVGSVGElement::currentScale):
333         (WebCore::SVGSVGElement::setCurrentScale):
334
335 2008-03-12  David Hyatt  <hyatt@apple.com>
336
337         Eliminate setTextMultiplier from the bridge.  Make Webkit just call setZoomFactor on the frame directly.
338
339         Reviewed by Tim H.
340
341         * WebCore.base.exp:
342         * page/mac/WebCoreFrameBridge.h:
343         * page/mac/WebCoreFrameBridge.mm:
344
345 2008-03-12  Dan Bernstein  <mitz@apple.com>
346
347         Reviewed by Darin Adler and Sam Weinig.
348
349         - <rdar://problem/4433248> use CoreText API instead of SPI on Leopard
350
351         Use CTFontCopyGraphicsFont and CTFontGetPlatformFont on Leopard instead
352         of wkGetCGFontFromNSFont and wkGetNSFontATSUFontId, relying on NSFont
353         and CTFontRef being toll-free bridged.
354
355         * WebCore.Tiger.exp:
356         * WebCore.base.exp:
357         * platform/graphics/mac/FontMac.mm:
358         (WebCore::Font::drawGlyphs): Changed to use the cgFont() accessor.
359         * platform/graphics/mac/FontPlatformData.h:
360         Made m_cgFont a RetainPtr on Leopard.
361         (WebCore::toCTFontRef): Added a function that encapsulates the
362         toll-free bridging.
363         (WebCore::FontPlatformData::FontPlatformData):
364         (WebCore::FontPlatformData::cgFont): Added this accessor method.
365         * platform/graphics/mac/FontPlatformDataMac.mm:
366         (WebCore::FontPlatformData::FontPlatformData): Changed to use
367         CoreText API on Leopard.
368         (WebCore::FontPlatformData::setFont): Ditto.
369         * platform/graphics/mac/SimpleFontDataMac.mm:
370         (WebCore::initFontData):
371         (WebCore::pathFromFont):
372         (WebCore::SimpleFontData::platformInit):
373         (WebCore::SimpleFontData::platformWidthForGlyph):
374         * platform/mac/WebCoreSystemInterface.mm:
375
376 2008-03-12  David Harrison  <harrison@apple.com>
377
378         Reviewed by Darin.
379
380         <rdar://problem/5607382> CrashTracer: [REGRESSION] 2290 crashes in Safari at com.apple.WebCore: -[WebCoreAXObject isWebArea] + 8
381
382         The problem was that we lost track of the AX cache for a subframe when Frame::disconnectOwnerElement() was
383         called, so we were unable to locate the AXObjects to de-register from AppKit's accessibility registry.
384         Also saw that cache clearing was missing from Document::detach(), and fixed that.
385         
386         Also added a debug-only check that AXObjectCache::remove() not finding the AXObject is expected.
387         
388         Lastly, RenderWidget::destroy() now skips trying to remove the AXObject if accessibility has never been enabled.
389        
390         * dom/Document.cpp:
391         (WebCore::Document::attach):
392         Assert that there is no AX cache (since there is no renderer).
393         
394         (WebCore::Document::detach):
395         Destroy the AX cache installed on this document.
396         
397         (WebCore::Document::clearAXObjectCache):
398         New. Destroy the AX cache associated with this document.
399         
400         (WebCore::Document::axObjectCache):
401         Added some comments.
402         
403         * dom/Document.h:
404         Declare clearAXObjectCache().
405         
406         * page/Frame.cpp:
407         (WebCore::Frame::disconnectOwnerElement):
408         Destroy the AX cache associated with this frame's document.
409         
410         * page/mac/AXObjectCacheMac.mm:
411         (WebCore::AXObjectCache::remove):        
412         * page/mac/WebCoreAXObject.mm:
413         (-[WebCoreAXObject initWithRenderer:]):
414         (-[WebCoreAXObject detach]):
415         * rendering/RenderObject.cpp:
416         (WebCore::RenderObject::RenderObject):
417         (WebCore::RenderObject::~RenderObject):
418         * rendering/RenderObject.h:
419         (WebCore::RenderObject::setHasAXObject):
420         (WebCore::RenderObject::hasAXObject):
421         Add debug-only check that AXObjectCache::remove() not finding the AXObject is expected.
422         
423         * rendering/RenderWidget.cpp:
424         (WebCore::RenderWidget::destroy):
425         Skip call to remove the AXObject if accessibility has never been enabled. A simple speed optimization in the
426         very common case that the accessibility APIs are not being used. Same as in RenderObject::destroy().
427
428 2008-03-12  Xan Lopez  <xan@gnome.org>
429
430         Reviewed by Alp Toker.
431
432         http://bugs.webkit.org/show_bug.cgi?id=15229
433
434         Add Pango font backend.
435
436         Original patch by Sven Herzberg <sven@imendio.com>
437
438         * GNUmakefile.am:
439         * platform/graphics/gtk/FontCacheGtk.cpp:
440         (WebCore::FontCache::fontExists):
441         * platform/graphics/gtk/FontCustomPlatformDataPango.cpp: Added.
442         (WebCore::FontCustomPlatformData::~FontCustomPlatformData):
443         (WebCore::FontCustomPlatformData::fontPlatformData):
444         (WebCore::releaseData):
445         (WebCore::createFontCustomPlatformData):
446         * platform/graphics/gtk/FontPlatformData.h:
447         (WebCore::FontPlatformData::FontPlatformData):
448         (WebCore::FontPlatformData::hash):
449         * platform/graphics/gtk/FontPlatformDataPango.cpp: Added.
450         (WebCore::FontPlatformData::FontPlatformData):
451         (WebCore::FontPlatformData::init):
452         (WebCore::FontPlatformData::~FontPlatformData):
453         (WebCore::FontPlatformData::isFixedPitch):
454         (WebCore::FontPlatformData::setFont):
455         (WebCore::FontPlatformData::operator==):
456         * platform/graphics/gtk/GlyphPageTreeNodePango.cpp: Added.
457         (WebCore::pango_font_get_glyph):
458         (WebCore::GlyphPage::fill):
459         * platform/graphics/gtk/SimpleFontDataPango.cpp: Added.
460         (WebCore::SimpleFontData::platformInit):
461         (WebCore::SimpleFontData::platformDestroy):
462         (WebCore::SimpleFontData::smallCapsFontData):
463         (WebCore::SimpleFontData::containsCharacters):
464         (WebCore::SimpleFontData::determinePitch):
465         (WebCore::SimpleFontData::platformWidthForGlyph):
466         (WebCore::SimpleFontData::setFont):
467
468 2008-03-12  Justin Garcia  <justin.garcia@apple.com>
469
470         Reviewed by Oliver.
471         
472         <rdar://problem/5770834> Crash at InsertTextCommand::prepareForTextInsertion() doing RemoveFormat in a certain list
473         
474         Fixes some (but not all) of the instances of:
475         <rdar://problem/5659795> CrashTracer: [REGRESSION] 187 crashes in Safari at com.apple.WebCore: WebCore::InsertTextCommand::prepareForTextInsertion + 241
476         <rdar://problem/5779631> CrashTracer: [USER] 25 crashes in Mail at WebCore::InsertTextCommand::prepareForTextInsertion
477
478         * editing/InsertLineBreakCommand.cpp:
479         (WebCore::InsertLineBreakCommand::doApply): applyStyle may have destroyed content that held
480         the old endingSelection(), so we must recompute it.  Added a FIXME.  Added a few comments.
481         * editing/RemoveFormatCommand.cpp:
482         (WebCore::RemoveFormatCommand::doApply): Added a FIXME.
483
484 2008-03-11  Alexey Proskuryakov  <ap@webkit.org>
485
486         Reviewed by Darin.
487
488         <rdar://problem/5640615> REGRESSION (Safari 2-3): Changing subframe encoding rules broke
489         some sites.
490
491         Other browsers' behavior keeps changing; let's implement what Firefox and Opera do now:
492         if the frame and subframe belong to the same site, then the encoding is inherited from parent
493         frame to subframe. Otherwise, it is not.
494
495         Always inheriting the encoding would cause a security problem.
496
497         Tests: http/tests/misc/frame-default-enc-different-domain.html
498                http/tests/misc/frame-default-enc-same-domain.html
499                fast/encoding/frame-default-enc.html
500
501         * loader/FrameLoader.cpp:
502         (WebCore::FrameLoader::write): Also removed a check for m_frame->document() being non-null -
503         this function also has code that uses it without checking, so it must be safe.
504
505 2008-03-12  Mark Rowe  <mrowe@apple.com>
506
507         Gtk build fix.
508
509         * page/Frame.h: Forward-declare FramePrivate.
510
511 2008-03-11  Steve Falkenburg  <sfalken@apple.com>
512
513         Disable LTCG/PGO for all of WebCore for now.
514         We'll re-enable this as part of follow-on PGO work.
515         
516         Reviewed by Oliver.
517
518         * WebCore.vcproj/WebCore.vcproj:
519
520 2008-03-11  Darin Adler  <darin@apple.com>
521
522         Reviewed by Sam.
523
524         - remove all bridge-related things from WebCore except the bridge itself
525
526         * WebCore.base.exp: Removed the bridge and setBridge functions.
527
528         * loader/FrameLoader.cpp:
529         (WebCore::FrameLoader::detachFromParent): Removed call to the bridge's
530         close method.
531
532         * page/Frame.cpp:
533         (WebCore::Frame::~Frame): Removed call to setBridge(0).
534         (WebCore::FramePrivate::FramePrivate): Removed initialization of m_bridge.
535         * page/Frame.h: Removed setBridge and bridge functions.
536         * page/FramePrivate.h: Removed m_bridge pointer.
537         * page/mac/FrameMac.mm: Removed setBridge and bridge functions.
538
539         * page/mac/WebCoreFrameBridge.h: Added setWebCoreFrame: method.
540         Removed bridgeForDOMDocument: and clearFrame methods.
541         * page/mac/WebCoreFrameBridge.mm: Ditto.
542         (-[WebCoreFrameBridge close]): Changed to set m_frame to 0 directly.
543         (-[WebCoreFrameBridge setWebCoreFrame:]): Added.
544
545 2008-03-11  Darin Adler  <darin@apple.com>
546
547         - restored some code I removed in the Range change; this code can't go
548           until the rest of the Range fix is in
549
550         * dom/Range.cpp:
551         (WebCore::Range::commonAncestorContainer): Added back the check for 0
552         that I removed erroneously in the Range patch.
553         (WebCore::Range::processContents): Left in assertions I used to debug
554         this.
555
556 2008-03-11  Darin Adler  <darin@apple.com>
557
558         - fix Release build
559
560         * platform/mac/ScrollViewMac.mm:
561         (WebCore::ScrollView::setContentsPos): Don't use NSMakePoint.
562
563 2008-03-11  Darin Adler  <darin@apple.com>
564
565         Reviewed by Anders.
566
567         - simplify Mac code for ScrollView, since it's used only for FrameView
568           and not in two different modes like it was historically
569         - remove code depending on the bridge to get from an NSView to a WebCore::Frame
570
571         * bindings/objc/DOMHTML.mm:
572         (-[DOMHTMLInputElement _rectOnScreen]): getDocumentView -> documentView.
573
574         * bridge/jni/jni_jsobject.cpp:
575         (createRootObject): Instead of using WebCoreViewFactory to find the frame given
576         and NSView, use the WebCoreFrameView interface to do it.
577
578         * editing/mac/EditorMac.mm:
579         (WebCore::Editor::paste): getDocumentView -> documentView.
580         * editing/mac/SelectionControllerMac.mm:
581         (WebCore::SelectionController::notifyAccessibilityForSelectionChange): Ditto.
582
583         * page/FrameView.h: Fixed comment.
584
585         * page/InspectorController.cpp:
586         (WebCore::InspectorController::drawNodeHighlight): Removed uneeded typecasts
587         to ScrollView* since FrameView is derived from ScrollView.
588
589         * page/mac/EventHandlerMac.mm:
590         (WebCore::EventHandler::focusDocumentView): getDocumentView -> documentView.
591         * page/mac/FrameMac.mm:
592         (WebCore::Frame::imageFromRect): Ditto.
593         * page/mac/WebCoreAXObject.mm:
594         (-[WebCoreAXObject position]): Ditto.
595         (-[WebCoreAXObject doAXTextMarkerForPosition:]): Ditto.
596         (-[WebCoreAXObject rendererForView:]): Updated code that used to use
597         WebCoreBridgeHolder to use WebCoreFrameView instead.
598
599         * page/mac/WebCoreFrameBridge.mm:
600         (-[WebCoreFrameBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
601         getDocumentView -> documentView.
602
603         * page/mac/WebCoreFrameView.h: Removed the WebCoreScrollbarMode type; we just
604         use WebCore::ScrollbarMode directly. Renamed the WebCoreFrameView protocol to
605         WebCoreFrameScrollView, since it's a protocol for the scroll view, not the
606         frame view itself. Replaced WebCoreBridgeHolder protocol with WebCoreFrameView
607         protocol, which returns a WebCore::Frame directly rather than a bridge.
608
609         * page/mac/WebCoreViewFactory.h: Eliminated the bridgeForView method.
610
611         * platform/ScrollView.h: Moved the constructor and destructor out of the
612         class-specific #if blocks. Renamed Mac-specific function that gets the
613         NSView for from getDocumentView to documentView and a scrollView function
614         that returns an appropriately classed NSScrollView.
615
616         * platform/graphics/MediaPlayer.h: Changed type of parentWidget to FrameView
617         instead of Widget.
618         * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
619         (WebCore::MediaPlayerPrivate::createQTMovieView): Removed unnecessary cast.
620
621         * platform/mac/PopupMenuMac.mm:
622         (WebCore::PopupMenu::show): getDocumentView -> documentView.
623         * platform/mac/ScrollViewMac.mm:
624         (WebCore::ScrollView::ScrollView): Added.
625         (WebCore::ScrollView::~ScrollView): Added.
626         (WebCore::ScrollView::scrollView): Added.
627         (WebCore::ScrollView::visibleWidth): Removed unused non-NSScrollView case.
628         (WebCore::ScrollView::visibleHeight): Ditto.
629         (WebCore::ScrollView::visibleContentRect): Ditto.
630         (WebCore::ScrollView::visibleContentRectConsideringExternalScrollers): Ditto.
631         (WebCore::ScrollView::contentsWidth): Ditto.
632         (WebCore::ScrollView::contentsHeight): Ditto.
633         (WebCore::ScrollView::contentsX): Ditto.
634         (WebCore::ScrollView::contentsY): Ditto.
635         (WebCore::ScrollView::scrollOffset): Ditto.
636         (WebCore::ScrollView::scrollRectIntoViewRecursively): Ditto.
637         (WebCore::ScrollView::setContentsPos): Ditto.
638         (WebCore::ScrollView::setVScrollbarMode): Ditto.
639         (WebCore::ScrollView::setHScrollbarMode): Ditto.
640         (WebCore::ScrollView::setScrollbarsMode): Ditto.
641         (WebCore::ScrollView::vScrollbarMode): Ditto.
642         (WebCore::ScrollView::hScrollbarMode): Ditto.
643         (WebCore::ScrollView::suppressScrollbars): Ditto.
644         (WebCore::ScrollView::addChild): Ditto.
645         (WebCore::ScrollView::resizeContents): Ditto.
646         (WebCore::ScrollView::updateContents): Ditto.
647         (WebCore::ScrollView::contentsToWindow): Ditto.
648         (WebCore::ScrollView::windowToContents): Ditto.
649         (WebCore::ScrollView::setStaticBackground): Ditto.
650         (WebCore::ScrollView::documentView): Renamed and removed unused case.
651         (WebCore::ScrollView::scrollbarUnderMouse): Removed incorrect comment.
652
653         * platform/mac/WidgetMac.mm:
654         (WebCore::Widget::getOuterView): Update for protocol name change.
655
656         * rendering/RenderThemeMac.mm:
657         (WebCore::RenderThemeMac::paintCheckbox): getDocumentView -> documentView.
658         (WebCore::RenderThemeMac::paintRadio): Ditto.
659         (WebCore::RenderThemeMac::paintButton): Ditto.
660         (WebCore::RenderThemeMac::paintMenuList): Ditto.
661         (WebCore::RenderThemeMac::paintSliderThumb): Ditto.
662         (WebCore::RenderThemeMac::paintSearchField): Ditto.
663         (WebCore::RenderThemeMac::paintSearchFieldCancelButton): Ditto.
664         (WebCore::RenderThemeMac::paintSearchFieldResultsDecoration): Ditto.
665         (WebCore::RenderThemeMac::paintSearchFieldResultsButton): Ditto.
666
667 2008-03-11  Brent Fulgham  <bfulgham@gmail.com>
668
669         Reviewed by Adam Roben.
670
671         Split CookieJarWin.cpp into CFNet and non-CFNet versions to
672         reduce the massive amount of conditionalization in the file.
673         (see http://bugs.webkit.org/show_bug.cgi?id=17788)
674
675         * WebCore.vcproj/WebCore.vcproj:
676         * platform/network/win/CookieJarCFNetWin.cpp: Copied from WebCore/platform/network/win/CookieJarWin.cpp.
677         (WebCore::setCookies):
678         (WebCore::cookies):
679         (WebCore::cookiesEnabled):
680         * platform/network/win/CookieJarWin.cpp:
681         (WebCore::setCookies):
682         (WebCore::cookies):
683         (WebCore::cookiesEnabled):
684
685 2008-03-11  Darin Adler  <darin@apple.com>
686
687         Reviewed by Sam.
688
689         - eliminate the remaining parts of WebCoreBridge used for calls to WebKit from WebCore
690
691         * page/ChromeClient.h: Added new client functions to replace calls up to WebKit
692         that were formerly handled by the bridge.
693
694         * page/Frame.h: Removed unneeded declarations. Moved declarations of script-specific
695         functions to a ScriptController section. Removed willPopupMenu.
696
697         * page/mac/ChromeMac.mm:
698         (WebCore::Chrome::focusNSView): Changed to call firstResponder and makeFirstResponder
699         via the client instead of the bridge.
700
701         * page/mac/EventHandlerMac.mm:
702         (WebCore::EventHandler::passMouseDownEventToWidget): Changed to call firstResponder
703         and makeFirstResponder via the chrome client instead of the bridge.
704
705         * page/mac/FrameMac.mm: Removed willPopupMenu.
706
707         * page/mac/WebCoreFrameBridge.h: Removed WebCoreFrameBridge protocol and
708         SubclassResponsibility category. Also removed some unneeded imports.
709
710         * platform/mac/PopupMenuMac.mm:
711         (WebCore::PopupMenu::show): Call willPopUpMenu on chrome client instead of frame.
712
713         * platform/mac/WidgetMac.mm:
714         (WebCore::Widget::setIsSelected): Call functions directly on the view rather than
715         calling via the bridge.
716
717 2008-03-11  Darin Adler  <darin@apple.com>
718
719         Reviewed by Mitz.
720
721         - make some Range improvements (preparation for Range support for DOM mutation)
722
723         Made constructors private, added create functions.
724         Made refcount start at 1 rather than starting at 0 and being incremented.
725         Made Range use two Position objects for the start/end container/offset pairs.
726
727         * WebCore.base.exp: Updated.
728
729         * dom/Document.cpp:
730         (WebCore::Document::createRange): Changed to use Range::create.
731         (WebCore::Document::removeMarkers): Updated for Range::first/pastLastNode name change.
732
733         * dom/Position.cpp:
734         (WebCore::Position::formatForDebugger): Updated for member variable name change.
735         (WebCore::Position::showTreeForThis): Ditto.
736         (WebCore::startPosition): Changed to use Range::startPosition.
737         (WebCore::endPosition): Changed to use Range::endPosition.
738
739         * dom/Position.h: Made the data members public and renamed them to container
740         and offset. But since offset() is already a function, temporarily used posOffset
741         for the data member. Later we'll get rid of offset(). Made more functions inline.
742         Removed the constructor that takes a PositionIterator.
743
744         * dom/PositionIterator.cpp:
745         (WebCore::PositionIterator::operator Position): Added. Replaces the constructor
746         that used to be in Position.
747         * dom/PositionIterator.h: Added conversion operator to produce a Position.
748         Removed friend declaration for Position.
749
750         * dom/Range.cpp:
751         (WebCore::Range::Range): Updated constructors for data member changes and made
752         them use a refcount of 1.
753         (WebCore::Range::create): Added.
754         (WebCore::Range::startContainer): Updated to eliminate use of m_detached; detached
755         is now indicated by m_start.container of 0. Also updated to use m_start instead
756         of the old m_startContainer.
757         (WebCore::Range::startOffset): Ditto.
758         (WebCore::Range::endContainer): Ditto.
759         (WebCore::Range::endOffset): Ditto.
760         (WebCore::Range::commonAncestorContainer): Ditto.
761         (WebCore::Range::collapsed): Ditto.
762         (WebCore::Range::setStart): Ditto.
763         (WebCore::Range::setEnd): Ditto.
764         (WebCore::Range::collapse): Ditto.
765         (WebCore::Range::isPointInRange): Ditto.
766         (WebCore::Range::comparePoint): Ditto.
767         (WebCore::Range::compareNode): Ditto.
768         (WebCore::Range::compareBoundaryPoints): Ditto.
769         (WebCore::Range::boundaryPointsValid): Ditto.
770         (WebCore::Range::deleteContents): Ditto.
771         (WebCore::Range::intersectsNode): Ditto.
772         (WebCore::Range::processContents): Ditto.
773         (WebCore::Range::extractContents): Ditto.
774         (WebCore::Range::cloneContents): Ditto.
775         (WebCore::Range::insertNode): Ditto.
776         (WebCore::Range::toString): Ditto.
777         (WebCore::Range::text): Ditto.
778         (WebCore::Range::createContextualFragment): Ditto.
779         (WebCore::Range::detach): Ditto.
780         (WebCore::Range::checkNodeBA): Changed to use switch statements instead of
781         multiple calls to the virtual nodeType() function.
782         (WebCore::Range::cloneRange): Ditto.
783         (WebCore::Range::setStartAfter): Ditto.
784         (WebCore::Range::setEndBefore): Ditto.
785         (WebCore::Range::setEndAfter): Ditto.
786         (WebCore::Range::selectNode): Ditto.
787         (WebCore::Range::selectNodeContents): Ditto.
788         (WebCore::Range::surroundContents): Ditto.
789         (WebCore::Range::setStartBefore): Ditto.
790         (WebCore::Range::checkDeleteExtract): Ditto.
791         (WebCore::Range::containedByReadOnly): Ditto.
792         (WebCore::Range::firstNode): Ditto.
793         (WebCore::Range::editingStartPosition): Ditto.
794         (WebCore::Range::pastLastNode): Ditto.
795         (WebCore::Range::addLineBoxRects): Ditto.
796         (WebCore::Range::formatForDebugger): Ditto.
797         (WebCore::operator==): Ditto.
798         (WebCore::rangeOfContents): Ditto.
799         (WebCore::Range::maxStartOffset): Ditto.
800         (WebCore::Range::maxEndOffset): Ditto.
801
802         * dom/Range.h: Made constructors private. Added create functions.
803         Added getters for startContainer/Offset and endContainer/Offset that
804         return 0 instead of an exception for detached ranges that are inline
805         and don't require an ExceptionCode out parameter. Changed the parameters
806         to setStart and setEnd to PassRefPtr. Removed isDetached function.
807         Made ActionType and processContents private. Made startPosition and
808         endPosition inlines and have then return const&. Renamed startNode and
809         pastEndNode to firstNode and pastLastNode to reduce the chance of
810         confusion with startContainer/endContainer. Used Position for m_start
811         and m_end instead of separate container and offset members. Changed
812         maxStartOffset and maxEndOffset into int to match other offsets.
813
814         * editing/ApplyStyleCommand.cpp:
815         (WebCore::ApplyStyleCommand::applyBlockStyle): Changed to use Range::create.
816         (WebCore::ApplyStyleCommand::applyInlineStyle): Ditto.
817         * editing/CompositeEditCommand.cpp:
818         (WebCore::CompositeEditCommand::inputText): Ditto.
819         (WebCore::CompositeEditCommand::moveParagraphs): Ditto.
820         * editing/DeleteSelectionCommand.cpp:
821         (WebCore::DeleteSelectionCommand::mergeParagraphs): Ditto.
822         * editing/Editor.cpp:
823         (WebCore::Editor::fontForSelection): Changed for pastLastNode name change.
824         (WebCore::Editor::setComposition): Changed to use Range::create.
825         (WebCore::paragraphAlignedRangeForRange): Ditto.
826         (WebCore::markMisspellingsOrBadGrammar): Changed to get rid of check for
827         isDetached and check for 0 from startContainer instead.
828         (WebCore::Editor::compositionRange): Changed to use Range::create.
829         * editing/EditorCommand.cpp:
830         (WebCore::unionDOMRanges): Ditto.
831         * editing/Selection.cpp:
832         (WebCore::Selection::toRange): Ditto.
833         * editing/TextIterator.cpp:
834         (WebCore::TextIterator::TextIterator): Changed for firstNode and pastLastNode
835         name change.
836         (WebCore::TextIterator::range): Changed to use Range::create.
837         (WebCore::SimplifiedBackwardsTextIterator::range): Ditto.
838         (WebCore::TextIterator::subrange): Ditto.
839         * editing/VisiblePosition.cpp:
840         (WebCore::makeRange): Ditto.
841         * editing/VisiblePosition.h: Added now-needed include.
842         * editing/htmlediting.cpp:
843         (WebCore::indexForVisiblePosition): Changed to use Range::create.
844         (WebCore::avoidIntersectionWithNode): Changed to get rid of check for
845         isDetached and check for 0 instead and to use Range::create.
846         * editing/markup.cpp:
847         (WebCore::renderedText): Changed to use Range::create.
848         (WebCore::createMarkup): Changed to no longer use isDetached and also
849         for new firstNode/pastEndNode names.
850         (WebCore::createFragmentFromText): Ditto.
851         * editing/visible_units.cpp:
852         (WebCore::previousBoundary): Changed to use Range::create.
853         * page/mac/WebCoreFrameBridge.mm:
854         (-[WebCoreFrameBridge convertToNSRange:]): Changed to no longer use
855         isDetached().
856         * rendering/RenderTextControl.cpp:
857         (WebCore::RenderTextControl::visiblePositionForIndex): Changed to use Range::create.
858         (WebCore::RenderTextControl::indexForVisiblePosition): Ditto.
859
860 2008-03-11  Daniel Zucker <zucker@wake3.com>
861
862         Reviewed by Adam Roben.
863
864         There are a handful of placed where the use of CFNetwork-specific
865         calls are protected by PLATFORM(CF).  Revise to use the more specific
866         USE(CFNETWORK) macro.  (See http://bugs.webkit.org/show_bug.cgi?id=17783) 
867
868         * platform/network/ProtectionSpace.cpp:  Change PLATFORM(CF) to USE(CFNETWORK)
869         * platform/network/ResourceHandle.cpp: Change PLATFORM(CF) to USE(CFNETWORK)
870         * platform/network/win/CookieJarWin.cpp:  Correct error in
871           InternetGetCookie call.  Conditionalize 'cookiesEnabled' the same
872           as all other implementations in this file.
873
874 2008-03-11  Xan Lopez  <xan@gnome.org>
875
876         Reviewed by Alp Toker.
877
878         http://bugs.webkit.org/show_bug.cgi?id=16476
879
880         Add libsoup HTTP backend.
881         
882         * GNUmakefile.am:
883         * platform/network/ResourceHandleInternal.h:
884         (WebCore::ResourceHandleInternal::ResourceHandleInternal):
885         * platform/network/soup/AuthenticationChallenge.h: Added.
886         (WebCore::AuthenticationChallenge::AuthenticationChallenge):
887         * platform/network/soup/ResourceError.h: Added.
888         (WebCore::ResourceError::ResourceError):
889         * platform/network/soup/ResourceHandleSoup.cpp: Added.
890         (WebCore::ResourceHandleInternal::~ResourceHandleInternal):
891         (WebCore::ResourceHandle::~ResourceHandle):
892         (WebCore::dataCallback):
893         (WebCore::parseDataUrl):
894         (WebCore::ResourceHandle::start):
895         (WebCore::ResourceHandle::cancel):
896         (WebCore::ResourceHandle::bufferedData):
897         (WebCore::ResourceHandle::supportsBufferedData):
898         (WebCore::ResourceHandle::setDefersLoading):
899         (WebCore::ResourceHandle::loadsBlocked):
900         (WebCore::ResourceHandle::willLoadFromCache):
901         * platform/network/soup/ResourceRequest.h: Copied from WebCore/platform/network/curl/ResourceRequest.h.
902         (WebCore::ResourceRequest::ResourceRequest):
903         (WebCore::ResourceRequest::doUpdatePlatformRequest):
904         * platform/network/soup/ResourceResponse.h: Added.
905         (WebCore::ResourceResponse::ResourceResponse):
906         (WebCore::ResourceResponse::setResponseFired):
907         (WebCore::ResourceResponse::responseFired):
908         (WebCore::ResourceResponse::doUpdateResourceResponse):
909
910 2008-03-11  Rodney Dawes  <dobey@wayofthemonkey.com>
911
912         Fix Qt build.
913
914         * plugins/qt/PluginDataQt.cpp:
915         (PluginData::initPlugins)
916
917 2008-03-11  Adam Roben  <aroben@apple.com>
918
919         Make attribute quoting in DOM view more consistent with source view
920
921         Two changes which make the DOM view more consistent with source view:
922          1) We now quote all attribute values, including URLs
923          2) The quotes around the values are now purple, matching the left and
924             right angle brackets that surround the tag
925
926         One bug fixed by these changes:
927          1) The entire URL is selected for editing when you double-click a URL
928             that is an attribute value. Previously, the first and last
929             characters were not included in the selection.
930
931         Reviewed by Darin.
932
933         * page/inspector/DocumentPanel.js:
934         (WebInspector.DOMNodeTreeElement._startEditingAttribute): Don't need
935         to account for the quotes around attribute values anymore because the
936         quotes are now outside the webkit-html-attribute-value span.
937         * page/inspector/utilities.js:
938         (nodeTitleInfo): Quote all attribute values, including URLs, and place
939         the quotes outside the webkit-html-attribute-value span.
940
941 2008-03-11  Adam Roben  <aroben@apple.com>
942
943         Stop including pthread.h in WebCore on Windows
944
945         Reviewed by Darin.
946
947         * WebCore.vcproj/WebCore.vcproj:
948           - Changed the include path to not contain pthreads/
949           - Let VS remove a duplicate FileConfiguration element
950           - Let VS have its way with the file ordering
951         * WebCorePrefix.h: Made the #include of pthread.h be compiled out on
952         Windows.
953         * loader/FTPDirectoryDocument.cpp: Added a Windows-specific #define of
954         localtime_r (pthread.h was providing a macro that substituted plain
955         old localtime before, but localtime_s is "more secure", so I went with
956         that).
957         * loader/FTPDirectoryParser.cpp: Ditto for gmtime_r.
958
959 2008-03-11  Adam Roben  <aroben@apple.com>
960
961         Roll out r30961 since it broke the default site icon on Windows
962
963         * loader/icon/IconDatabase.cpp:
964         (WebCore::IconDatabase::defaultIcon):
965
966 2008-03-11  Dan Bernstein  <mitz@apple.com>
967
968         Reviewed by Darin Adler.
969
970         - clean up line layout code
971
972         * platform/graphics/GraphicsContext.cpp:
973         (WebCore::TextRunIterator::increment): Removed the resolver parameter.
974         (WebCore::GraphicsContext::drawBidiText): Adjusted for changes to
975         createBidiRunsForLine(), which no longer takes a start parameter.
976         * platform/text/BidiResolver.h:
977         (WebCore::BidiResolver::): Made Noncopyable and removed the
978         m_adjustEmbedding member variable.
979         (WebCore::BidiResolver::position): Added. Returns the resolver's current
980         position.
981         (WebCore::BidiResolver::setPosition): Added. Sets the resolver's current
982         position without changing any other state.
983         (WebCore::BidiResolver::increment): Added. Advances the resolver to the
984         next position, allowing the iterator to push and pop embedding.
985         (WebCore::BidiResolver::appendRun): Removed the resolver parameter in
986         the call to increment().
987         (WebCore::BidiResolver::embed): Removed code to save, set and restore
988         m_adjustEmbedding.
989         (WebCore::BidiResolver::createBidiRunsForLine): Changed to not take a
990         'start' iterator. Instead, start at the current position. Removed code
991         to set m_adjustEmbedding. Changed for noncopyability.
992         * rendering/RenderBlock.h:
993         * rendering/bidi.cpp:
994         (WebCore::bidiNext): Made the resolver parameter optional. Changed to
995         null-check the 'end of inline' pointer only twice.
996         (WebCore::bidiFirst): Made the resolver parameter optional.
997         (WebCore::BidiIterator::increment): Ditto.
998         (WebCore::BidiState::increment): Added. Overrides the default
999         BidiResolver::increment() method by passing the resolver to
1000         BidiIterator::increment().
1001         (WebCore::checkMidpoints): Removed the resolver parameter.
1002         (WebCore::BidiState::appendRun): Removed code to save, set and restore
1003         m_adjustEmbedding. Adjusted for change to increment().
1004         (WebCore::RenderBlock::bidiReorderLine): Removed the 'start' parameter
1005         and unreachable code.
1006         (WebCore::buildCompactRuns): Adjusted for changes to BidiResolver/
1007         (WebCore::RenderBlock::layoutInlineChildren): Moved code to initialize
1008         the resolver from this method to determineStartPosition(). Unified the
1009         resolver with the 'start' iterator. Removed unreachable code. Moved one
1010         statement from the beginning of the while loop to the end.
1011         (WebCore::RenderBlock::determineStartPosition): Moved code to initialize
1012         the resolver from layoutInlineChildren() into this method.
1013         (WebCore::RenderBlock::matchedEndLine): Adjusted for the resolver and
1014         the 'start' iterator being one object.
1015         (WebCore::skipNonBreakingSpace): Made the parameter const.
1016         (WebCore::requiresLineBox): Ditto.
1017         (WebCore::RenderBlock::generatesLineBoxesForInlineChild): Adjusted for
1018         the change to BidiIterator::increment().
1019         (WebCore::RenderBlock::skipWhitespace): Made two versions of this
1020         method, one for BidiIterator and one for BidiState.
1021         (WebCore::shouldSkipWhitespaceAfterStartObject): Removed the resolver
1022         parameter.
1023         (WebCore::RenderBlock::findNextLineBreak): Removed the resolver
1024         parameter. Removed calls to setAdjustEmbedding(). Removed the 'previous'
1025         variable and changed the 'last' variable to do its job.
1026         * rendering/bidi.h:
1027
1028 2008-03-10  Adam Roben  <aroben@apple.com>
1029
1030         Part of Bug 17224: DOM nodes/attributes should be editable
1031
1032         <http://bugs.webkit.org/show_bug.cgi?id=17224>
1033         <rdar://problem/5732825>
1034
1035         This patch makes text nodes editable via double-click.
1036
1037         Reviewed by Tim.
1038
1039         * page/inspector/DocumentPanel.js:
1040         (WebInspector.DOMNodeTreeElement._startEditing):
1041           - Moved most of this code to _startEditingAttribute
1042           - Calls _startEditingTextNode or _startEditingAttribute as
1043             appropriate
1044         (WebInspector.DOMNodeTreeElement._startEditingAttribute): Added. Code
1045         came from _startEditing.
1046         (WebInspector.DOMNodeTreeElement._startEditingTextNode): Added.
1047         (WebInspector.DOMNodeTreeElement._textNodeEditingCommitted): Added.
1048         (WebInspector.DOMNodeTreeElement._editingCancelled): Renamed from
1049         _attributeEditingCancelled.
1050         * page/inspector/utilities.js:
1051         (nodeTitleInfo): Wrap text nodes in a webkit-html-text-node span so
1052         that we can easily recognize/edit them.
1053
1054 2008-03-11  Holger Hans Peter Freyther  <zecke@selfish.org>
1055
1056         Reviewed by Darin.
1057
1058         r25512 inlined the urlIcon to improve the startup time of Safari on Mac. Inlining is
1059         not suitable for platforms where this icon is themable. E.g. the Qt platform is allowing
1060         to theme this icon and the Gtk+ platform will probably end up with themable icons
1061         as well.
1062         
1063         Remove dead code from the windows port and move the urlIcon from the windows
1064         directory to the Resource directory to be used by Qt and other ports.
1065         
1066         Ifdef the usage of the built-in icon in IconDatabase.cpp and for Qt do not use
1067         it. Gtk+ currently has no proper implementation of Image::loadPlatformResource but
1068         once it does it wants to use this for getting the urlIcon as well.
1069
1070         * Resources/urlIcon.png: Renamed from WebKit/win/WebKit.vcproj/urlIcon.png.
1071         * loader/icon/IconDatabase.cpp:
1072         (WebCore::IconDatabase::defaultIcon):
1073
1074 2008-03-11  Tor Arne Vestbø  <tavestbo@trolltech.com>
1075
1076         Reviewed by Darin.
1077
1078         Implemented HTML media element support for QtWebKit, using Phonon.
1079
1080         http://bugs.webkit.org/show_bug.cgi?id=17766
1081
1082         * WebCore.pro:
1083         * platform/graphics/MediaPlayer.cpp:
1084         * platform/graphics/qt/MediaPlayerPrivatePhonon.cpp: Added.
1085         (debugMediaObject):
1086         (WebCore::MediaPlayerPrivate::MediaPlayerPrivate):
1087         (WebCore::MediaPlayerPrivate::~MediaPlayerPrivate):
1088         (WebCore::MediaPlayerPrivate::getSupportedTypes):
1089         (WebCore::MediaPlayerPrivate::hasVideo):
1090         (WebCore::MediaPlayerPrivate::load):
1091         (WebCore::MediaPlayerPrivate::cancelLoad):
1092         (WebCore::MediaPlayerPrivate::play):
1093         (WebCore::MediaPlayerPrivate::pause):
1094         (WebCore::MediaPlayerPrivate::paused):
1095         (WebCore::MediaPlayerPrivate::seek):
1096         (WebCore::MediaPlayerPrivate::seeking):
1097         (WebCore::MediaPlayerPrivate::duration):
1098         (WebCore::MediaPlayerPrivate::currentTime):
1099         (WebCore::MediaPlayerPrivate::setEndTime):
1100         (WebCore::MediaPlayerPrivate::maxTimeBuffered):
1101         (WebCore::MediaPlayerPrivate::maxTimeSeekable):
1102         (WebCore::MediaPlayerPrivate::bytesLoaded):
1103         (WebCore::MediaPlayerPrivate::totalBytesKnown):
1104         (WebCore::MediaPlayerPrivate::totalBytes):
1105         (WebCore::MediaPlayerPrivate::setRate):
1106         (WebCore::MediaPlayerPrivate::setVolume):
1107         (WebCore::MediaPlayerPrivate::setMuted):
1108         (WebCore::MediaPlayerPrivate::dataRate):
1109         (WebCore::MediaPlayerPrivate::networkState):
1110         (WebCore::MediaPlayerPrivate::readyState):
1111         (WebCore::MediaPlayerPrivate::updateStates):
1112         (WebCore::MediaPlayerPrivate::setVisible):
1113         (WebCore::MediaPlayerPrivate::setRect):
1114         (WebCore::MediaPlayerPrivate::loadStateChanged):
1115         (WebCore::MediaPlayerPrivate::rateChanged):
1116         (WebCore::MediaPlayerPrivate::sizeChanged):
1117         (WebCore::MediaPlayerPrivate::timeChanged):
1118         (WebCore::MediaPlayerPrivate::volumeChanged):
1119         (WebCore::MediaPlayerPrivate::didEnd):
1120         (WebCore::MediaPlayerPrivate::loadingFailed):
1121         (WebCore::MediaPlayerPrivate::naturalSize):
1122         (WebCore::MediaPlayerPrivate::eventFilter):
1123         (WebCore::MediaPlayerPrivate::repaint):
1124         (WebCore::MediaPlayerPrivate::paint):
1125         (WebCore::MediaPlayerPrivate::stateChanged):
1126         (WebCore::MediaPlayerPrivate::tick):
1127         (WebCore::MediaPlayerPrivate::metaDataChanged):
1128         (WebCore::MediaPlayerPrivate::seekableChanged):
1129         (WebCore::MediaPlayerPrivate::hasVideoChanged):
1130         (WebCore::MediaPlayerPrivate::bufferStatus):
1131         (WebCore::MediaPlayerPrivate::finished):
1132         (WebCore::MediaPlayerPrivate::currentSourceChanged):
1133         (WebCore::MediaPlayerPrivate::aboutToFinish):
1134         (WebCore::MediaPlayerPrivate::prefinishMarkReached):
1135         (WebCore::MediaPlayerPrivate::totalTimeChanged):
1136         * platform/graphics/qt/MediaPlayerPrivatePhonon.h: Added.
1137         (WebCore::MediaPlayerPrivate::):
1138         (WebCore::MediaPlayerPrivate::isAvailable):
1139
1140 2008-03-10  Sam Weinig  <sam@webkit.org>
1141
1142         Reviewed by Beth Dakin.
1143
1144         Throw a SECURITY_ERR when accessing a tainted canvas
1145         by CanvasRenderingContext2D::getImageData() and
1146         HTMLCanvasElement::toDataURL().
1147
1148         * html/CanvasRenderingContext2D.cpp:
1149         (WebCore::CanvasRenderingContext2D::getImageData):
1150         * html/CanvasRenderingContext2D.h:
1151         * html/CanvasRenderingContext2D.idl:
1152         * html/HTMLCanvasElement.cpp:
1153         (WebCore::HTMLCanvasElement::toDataURL):
1154         * html/HTMLCanvasElement.h:
1155         * html/HTMLCanvasElement.idl:
1156
1157 2008-03-10  Justin Garcia  <justin.garcia@apple.com>
1158
1159         Reviewed by Sam.
1160
1161         <rdar://problem/5779984> REGRESSION (r30391): GMail: Safari won't display the Edit Link dialog
1162
1163         * bindings/js/JSCSSStyleDeclarationCustom.cpp:
1164         (WebCore::hasCSSPropertyNamePrefix): Fixed a typo.  The code was only
1165         comparing the first character of the prefix to the first character
1166         of the property name.
1167
1168 2008-03-10  Andre Boule  <aboule@apple.com>
1169
1170         Reviewed by Beth.
1171
1172         Hold off on initializing the frame to avoid the RenderView getting 
1173         a null FrameView. This could potentially cause problems.
1174
1175         * svg/graphics/SVGImage.cpp:
1176         (WebCore::SVGImage::dataChanged):
1177
1178 2008-03-10  Darin Adler  <darin@apple.com>
1179
1180         - try to fix Qt build
1181
1182         * bridge/qt/qt_runtime.cpp:
1183         (KJS::Bindings::convertQVariantToValue): Change KJS::UChar to UChar.
1184
1185 2008-03-10  Darin Adler  <darin@apple.com>
1186
1187         Reviewed by Antti.
1188
1189         - fix <rdar://problem/3059610> VIP: links opened in new frame, window, or tab
1190           should be redrawn as visited immediately
1191         - fix <rdar://problem/4382809> Going "back" a page doesn't change the color of
1192           the visited URL at directory.umi
1193         - fix http://bugs.webkit.org/show_bug.cgi?id=4941
1194           Visited links should be marked as visited
1195         - fix http://bugs.webkit.org/show_bug.cgi?id=7960
1196           REGRESSION: Visited link color doesn't displayed after loading page from cache
1197
1198         We now mark all links on a page as "changed" at the appropriate times.
1199
1200         * WebCore.base.exp: Update since I made completeURL be a const member function.
1201
1202         * css/CSSStyleSelector.cpp: Got rid of some unneeded globals that could be turned
1203         into locals. Also changed some static data members to file-scoped globals with
1204         internal linkage. Renamed the globals to get rid of the m_ prefix. Changed the
1205         prefix on m_styleNotYetAvailable to s_styleNotYetAvailable.
1206         (WebCore::CSSStyleSelector::CSSStyleSelector): Updated for name changes.
1207         (WebCore::parseUASheet): Tweak the comment.
1208         (WebCore::CSSStyleSelector::loadDefaultStyle): Updated for name changes and to
1209         use local variables instead of globals where possible.
1210         (WebCore::CSSStyleSelector::checkPseudoState): Made this a member function so
1211         it can store the link in a hash. Also changed it to have a return value instead
1212         of having it modify a global variable. Added code to put the hash into a set so
1213         we can tell later if this is one of the links that affects this page.
1214         (WebCore::CSSStyleSelector::canShareStyleWithElement): Updated for the change to
1215         checkPseudoState.
1216         (WebCore::CSSStyleSelector::matchUARules): Updated for name changes.
1217         (WebCore::CSSStyleSelector::styleForElement): Ditto.
1218         (WebCore::CSSStyleSelector::adjustRenderStyle): Ditto.
1219         (WebCore::CSSStyleSelector::pseudoStyleRulesForElement): Changed code to read
1220         the SVG style sheet to use a boolean global and put it right here in the function
1221         since this is the only code that needs to know about it.
1222         (WebCore::CSSStyleSelector::checkOneSelector): Updated for name changes.
1223         (WebCore::colorForCSSValue): Moved code inside the function that is not needed
1224         anywhere else.
1225         (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Updaed for the change
1226         to checkPseudoState.
1227         (WebCore::CSSStyleSelector::allVisitedStateChanged): Added. Calls setChanged on
1228         all links if there were any in the set.
1229         (WebCore::CSSStyleSelector::visitedStateChanged): Added. Calls setChanged on all
1230         links if the one that changed is in the set.
1231
1232         * css/CSSStyleSelector.h: Removed unused StyleSelector class and State enum. Made
1233         CSSStyleSelector derive from Noncopyable. Made lots of member functions private that
1234         didn't need to be public, and removed others that could be made into non-member
1235         functions. Changed pseudoStyleRulesForElement to take a const String& instead of
1236         a StringImpl*. Added new allVisitedStateChanged and visitedStateChanged functions.
1237         Got rid of unneeded friend declarations.
1238
1239         * dom/Document.cpp:
1240         (WebCore::Document::completeURL): Made const.
1241         (WebCore::findSlashDotDotSlash): Moved here from PageGroup.
1242         (WebCore::findSlashSlash): Ditto.
1243         (WebCore::findSlashDotSlash): Ditto.
1244         (WebCore::containsColonSlashSlash):
1245         (WebCore::cleanPath): Ditto.
1246         (WebCore::matchLetter): Ditto.
1247         (WebCore::needsTrailingSlash): Ditto.
1248         (WebCore::Document::visitedLinkHash): Moved this here from PageGroup. This is
1249         the poor-man's completeURL function. The idea of putting it here is that this
1250         way it can be alongside the real completeURL function. Later we should figure out
1251         a way to make this function share more code with the real thing and match behavior.
1252
1253         * dom/Document.h: Marked completeURL function const. Added visitedLinkHash function.
1254
1255         * page/DOMWindow.cpp:
1256         (WebCore::DOMWindow::getMatchedCSSRules): Updated for change to CSSStyleSelector.
1257
1258         * page/Page.cpp:
1259         (WebCore::Page::allVisitedStateChanged): Added. Calls allVisitedStateChanged on all
1260         style selectors.
1261         (WebCore::Page::visitedStateChanged): Ditto.
1262         * page/Page.h: Added the above functions.
1263
1264         * page/PageGroup.cpp:
1265         (WebCore::PageGroup::isLinkVisited): Changed to take a visitedLinkHash parameter.
1266         The CSSStyleSelector now handles actually computing the hash, and it does so by
1267         calling code in Document.
1268         (WebCore::PageGroup::addVisitedLink): Refactored so the two overloaded copies share
1269         a bit more code. Added code that calls visitedStateChanged if a new link was added.
1270         (WebCore::PageGroup::removeVisitedLinks): Added code to call allVisitedStateChanged
1271         if any visited links are removed.
1272         * page/PageGroup.h: Include StringHash.h instead of having the AlreadyHashed struct
1273         definition here.
1274
1275         * platform/text/StringHash.h:
1276         (WebCore::CaseFoldingHash::hash): Tweaked to make this a bit more consistent with
1277         the StringImpl::computeHash function, using the same technique for avoiding 0.
1278         (WebCore::AlreadyHashed::hash): Added. Was formerly in PageGroup.h.
1279         (WebCore::AlreadyHashed::avoidDeletedValue): Added. Was formerly in PageGroup.cpp.
1280
1281         * rendering/RenderStyle.cpp:
1282         (WebCore::RenderStyle::isStyleAvailable): Changed to use an inline function instead
1283         of getting directly at a data member so the data member could be made private.
1284
1285         * loader/FrameLoader.cpp:
1286         (WebCore::FrameLoader::scrollToAnchor): Added call to updateHistoryForAnchorScroll.
1287         (WebCore::FrameLoader::updateHistoryForAnchorScroll): Added.
1288         * loader/FrameLoader.h: Added updateHistoryForAnchorScroll.
1289
1290 2008-03-10  Adam Roben  <aroben@apple.com>
1291
1292         Part of Bug 17224: DOM nodes/attributes should be editable
1293
1294         <http://bugs.webkit.org/show_bug.cgi?id=17224>
1295         <rdar://problem/5732825>
1296
1297         This patch makes DOM attributes editable via double-click.
1298
1299         Reviewed by Tim.
1300
1301         * page/inspector/DocumentPanel.js:
1302         (WebInspector.DOMNodeTreeElement.onmousedown): Don't do anything if
1303         we're being edited, since we want default editing behaviors to work.
1304         (WebInspector.DOMNodeTreeElement.ondblclick): Try to start editing
1305         before doing anything else.
1306         (WebInspector.DOMNodeTreeElement._startEditing): Added. Currently only
1307         lets you edit attributes.
1308         (WebInspector.DOMNodeTreeElement._attributeEditingCommitted): Added.
1309         Uses a scratch element to get the new attribute(s) parsed, then sets
1310         the attribute(s) on the node in the inspected document.
1311         (WebInspector.DOMNodeTreeElement._attributeEditingCancelled): Added.
1312         (WebInspector.DOMNodeTreeElement._updateTitle): Added. Refreshes the
1313         representation of the node in the Inspector's DOM tree to reflect
1314         the node's current state.
1315         * page/inspector/inspector.css: Made the .editing class apply
1316         everywhere.
1317         * page/inspector/utilities.js:
1318         (nodeTitleInfo): Changed to surround attribute name/value pairs in a
1319         webkit-html-attribute span so that we can easily edit the pair as a
1320         whole.
1321
1322 2008-03-10  David Kilzer  <ddkilzer@apple.com>
1323
1324         Fix 64-bit builds.
1325
1326         Reviewed by Stephanie.
1327
1328         WebCore.exp only gets generated once for both 32-bit and 64-bit builds,
1329         so we must exclude the _NPN symbols when creating WebCore.LP64.exp.
1330
1331         * WebCore.xcodeproj/project.pbxproj: Reverted build phase shell code to
1332         r30826 to remove _NPN symbols from 64-bit builds in WebCore.LP64.exp.
1333
1334 2008-03-10  Eric Seidel  <eric@webkit.org>
1335
1336         Reviewed by Darin.
1337
1338         Remove KJS::UChar, use ::UChar instead
1339         http://bugs.webkit.org/show_bug.cgi?id=17017
1340
1341         To functional changes, thus no tests.
1342
1343         * bindings/js/JSCSSStyleDeclarationCustom.cpp:
1344         (WebCore::hasCSSPropertyNamePrefix):
1345         (WebCore::cssPropertyName):
1346         * bindings/js/JSDOMWindowBase.cpp:
1347         (WebCore::windowProtoFuncAToB):
1348         (WebCore::windowProtoFuncBToA):
1349         * bindings/js/JSSVGPODTypeWrapper.h:
1350         * bindings/js/kjs_proxy.cpp:
1351         (WebCore::KJSProxy::evaluate):
1352         * bridge/objc/objc_utility.mm:
1353         (KJS::Bindings::throwError):
1354         * dom/Document.cpp:
1355         (WebCore::Document::parseQualifiedName):
1356         * platform/text/AtomicString.cpp:
1357         (WebCore::AtomicString::add):
1358         * platform/text/String.cpp:
1359         (WebCore::String::String):
1360         (WebCore::String::operator Identifier):
1361         (WebCore::String::operator UString):
1362         * platform/text/TextCodecICU.cpp:
1363         (WebCore::TextCodecICU::decode):
1364         * svg/SVGAnimatedTemplate.h:
1365
1366 2008-03-10  Darin Adler  <darin@apple.com>
1367
1368         Reviewed by Sam.
1369
1370         - eliminate keyboard UI mode method from WebCoreFrameBridge
1371
1372         * page/ChromeClient.h: Added keyboardUIMode function.
1373         (WebCore::ChromeClient::keyboardUIMode): Ditto.
1374         * page/mac/EventHandlerMac.mm:
1375         (WebCore::EventHandler::tabsToAllControls): Call chrome client function instead
1376         of bridge function.
1377         * page/mac/WebCoreFrameBridge.h: Removed keyboardUIMode method, and other unused
1378         ones.
1379
1380         * WebCore.xcodeproj/project.pbxproj: Allowed Xcode to change the project.
1381         Do not try to fight the Xcode.
1382
1383 2008-03-10  Darin Adler  <darin@apple.com>
1384
1385         - oops, forgot to save last couple changes from the editor
1386
1387         * bindings/js/JSDOMWindowCustom.cpp:
1388         (WebCore::markDOMObjectWrapper): Tweaked a tiny bit.
1389         (WebCore::JSDOMWindow::mark): Sorted alphabetically.
1390
1391 2008-03-10  Darin Adler  <darin@apple.com>
1392
1393         Reviewed by Geoff.
1394
1395         - fix failing regression test (window.navigator is getting garbage
1396           collected and thus losing its custom properties)
1397
1398         * bindings/js/JSDOMWindowCustom.cpp:
1399         (WebCore::markDOMObject): Added helper function.
1400         (WebCore::JSDOMWindow::mark): Added. Marks the wrappers for all the objects that hang
1401         off the window object.
1402
1403         * page/DOMWindow.h:
1404         (WebCore::DOMWindow::optionalScreen): Added so we can get the Screen object without
1405         creating it if it's already there.
1406         (WebCore::DOMWindow::optionalSelection): Ditto.
1407         (WebCore::DOMWindow::optionalHistory): Ditto.
1408         (WebCore::DOMWindow::optionalLocationbar): Ditto.
1409         (WebCore::DOMWindow::optionalMenubar): Ditto.
1410         (WebCore::DOMWindow::optionalPersonalbar): Ditto.
1411         (WebCore::DOMWindow::optionalScrollbars): Ditto.
1412         (WebCore::DOMWindow::optionalStatusbar): Ditto.
1413         (WebCore::DOMWindow::optionalToolbar): Ditto.
1414         (WebCore::DOMWindow::optionalConsole): Ditto.
1415         (WebCore::DOMWindow::optionalNavigator): Ditto.
1416
1417         * page/DOMWindow.idl: Added the CustomMarkFunction flag. Sorted the flags in
1418         alphabetical order since there are a lot of them.
1419
1420 2008-03-10  Darin Adler  <darin@apple.com>
1421
1422         Reviewed by Sam.
1423
1424         - eliminate Java applet methods from WebCoreFrameBridge
1425
1426         * loader/FrameLoaderClient.h: Added a javaApplet function.
1427         * page/mac/FrameMac.mm:
1428         (WebCore::Frame::createScriptInstanceForWidget): Streamlined the code.
1429         Use the loader client instead of the bridge to get the applet.
1430         * page/mac/WebCoreFrameBridge.h: Removed the getAppletInView and
1431         pollForAppletInView methods. Also removed other unused things.
1432
1433 2008-03-10  Marc-Antoine Ruel  <maruel@gmail.com>
1434
1435         Reviewed by Eric, landed by Darin.
1436
1437         http://bugs.webkit.org/show_bug.cgi?id=16095
1438         Move GraphicsContextPrivate to its own header file.
1439
1440         Moves GraphicsContextState and GraphicsContextPrivate to its
1441         own header
1442
1443         * WebCore.vcproj/WebCore.vcproj:
1444         * platform/graphics/GraphicsContext.cpp:
1445         * platform/graphics/GraphicsContextPrivate.h: Added.
1446         (WebCore::GraphicsContextState::GraphicsContextState):
1447         (WebCore::GraphicsContextPrivate::GraphicsContextPrivate):
1448
1449 2008-03-10  Julien Chaffraix  <julien.chaffraix@gmail.com>
1450
1451         Reviewed and landed by Darin.
1452
1453         bug 12182 : XMLHttpRequest should raise SECURITY_ERR for same-origin policy violations
1454
1455         Removed reference to PERMISSION_DENIED (previous non standard exception) and replaced it
1456         by DOM exception SECURITY_ERR. Updated XMLHttpRequest::open to raise SECURITY_ERR.
1457
1458         * bindings/js/kjs_binding.cpp:
1459         (WebCore::setDOMException): Removed PERMISSION_DENIED code.
1460         * dom/ExceptionCode.cpp: Added SECURITY_ERR exception.
1461         * dom/ExceptionCode.h: Ditto.
1462         * xml/XMLHttpRequest.cpp:
1463         (WebCore::XMLHttpRequest::open): Returns SECURITY_ERR now.
1464         * xml/XMLHttpRequestException.h: Removed PERMISSION_DENIED.
1465
1466 2008-03-09  Adam Roben  <aroben@apple.com>
1467
1468         Refactor CSS editing code so we can share it with DOM editing
1469
1470         Add WebInspector.startEditing, which takes the element to be edited, a
1471         committedCallback, a cancelledCallback, and a context parameter. This
1472         function takes care of setting up the element for editing, and calls
1473         either the cancelledCallback or committedCallback when editing ends.
1474
1475         Reviewed by Tim.
1476
1477         * page/inspector/StylesSidebarPane.js:
1478         (WebInspector.StylePropertyTreeElement.startEditing):
1479           - Call WebInspector.isBeingEdited and WebInspector.startEditing
1480           - Removed code now handled by WebInspector.startEditing
1481         (WebInspector.StylePropertyTreeElement.editingEnded):
1482           - Renamed from endEditing
1483           - Removed code now handled by WebInspector.startEditing
1484         (WebInspector.StylePropertyTreeElement.editingCancelled):
1485           - Renamed from cancelEditing
1486           - Changed parameters to match WebInspector.startEditing's
1487             cancelledCallback
1488         (WebInspector.StylePropertyTreeElement.editingCommitted):
1489           - Renamed from commitEditing
1490           - Changed parameters to match WebInspector.startEditing's
1491             committedCallback
1492         * page/inspector/inspector.js:
1493         (WebInspector.changeFocus): Changed a call to firstParentWithClassName
1494         to firstParentOrSelfWithClassName so that if the focusable element
1495         itself is the target it will be recognized. I don't know why this
1496         change wasn't needed before this.
1497         (WebInspector.isBeingEdited): Added.
1498         (WebInspector.startEditing): Added.
1499
1500 2008-03-10  Adam Roben  <aroben@apple.com>
1501
1502         Windows build fix
1503
1504         * WebCore.vcproj/WebCore.vcproj: Pick up generated source files out of
1505         $(WebKitOutputDir) instead of hard-coding WebKitBuild.
1506
1507 2008-03-10  Darin Adler  <darin@apple.com>
1508
1509         * DerivedSources.make: Merge plug-in-related changes with the new way of handling
1510         autogenerated DOM classes.
1511
1512 2008-03-10  Johnny Ding  <johnnyding.webkit@gmail.com>
1513
1514         Reviewed, tweaked and landed by Alexey.
1515
1516         - fix http://bugs.webkit.org/show_bug.cgi?id=17732        
1517
1518         We didn't have a fallback to frame encoding in the case of loading a script via
1519         changing its src attribute.
1520
1521         Test: fast/dom/HTMLScriptElement/script-decoding-error-after-setting-src.html
1522
1523         * html/HTMLScriptElement.cpp:
1524         (WebCore::HTMLScriptElement::parseMappedAttribute): Use a helper function to get proper
1525         charset for correct decoding of script content.
1526         (WebCore::HTMLScriptElement::insertedIntoDocument):
1527         (WebCore::HTMLScriptElement::scriptCharset): A helper function for getting proper charset
1528         for the script (as much as can be determined prior to loading it).
1529         * html/HTMLScriptElement.h:
1530         * html/HTMLTokenizer.cpp:
1531         (WebCore::HTMLTokenizer::parseTag): Use a helper function to get proper charset for correct
1532         decoding of script content.
1533
1534 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1535
1536         Reviewed by Lars.
1537
1538         Fix reference counting of returned MimeType and Plugin objects
1539         created in the array wrappers.
1540
1541         * plugins/MimeTypeArray.cpp:
1542         * plugins/MimeTypeArray.h:
1543         * plugins/Plugin.cpp:
1544         * plugins/Plugin.h:
1545         * plugins/PluginArray.cpp:
1546         * plugins/PluginArray.h:
1547
1548 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1549
1550         Wx linking fix.
1551
1552         Added missing stubs for PluginData.
1553
1554         * platform/wx/TemporaryLinkStubs.cpp:
1555
1556 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1557
1558         Windows build fix that I forgot to merge earlier ;(
1559
1560         Forward declare Page as class, not struct.
1561
1562         * plugins/PluginData.h:
1563
1564 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1565
1566         Attempt to fix the Wx build.
1567
1568         * WebCoreSources.bkl:
1569
1570 2008-03-07  Simon Hausmann  <hausmann@webkit.org>
1571
1572         Reviewed by Darin.
1573
1574         Done with Lars.
1575
1576         http://bugs.webkit.org/show_bug.cgi?id=16815
1577
1578         Ported the manually written JS bindings of window.navigator,
1579         window.navigator.plugins and window.navigator.mimeTypes to
1580         auto-generated bindings.
1581
1582         Moved the globally cached plugin and mimetype information to a
1583         per WebCore::Page shared PluginData structure.
1584
1585         Implemented window.navigator.plugins.refresh() in a
1586         platform-independent way.
1587
1588         * DerivedSources.make:
1589         * GNUmakefile.am:
1590         * WebCore.pro:
1591         * WebCore.vcproj/WebCore.vcproj:
1592         * WebCore.xcodeproj/project.pbxproj:
1593         * bindings/js/JSDOMWindowBase.cpp:
1594         (WebCore::JSDOMWindowBase::getValueProperty):
1595         * bindings/js/JSMimeTypeArrayCustom.cpp: Added.
1596         (WebCore::JSMimeTypeArray::canGetItemsForName):
1597         (WebCore::JSMimeTypeArray::nameGetter):
1598         * bindings/js/JSNavigatorCustom.cpp: Added.
1599         (WebCore::needsYouTubeQuirk):
1600         (WebCore::JSNavigator::appVersion):
1601         * bindings/js/JSPluginArrayCustom.cpp: Added.
1602         (WebCore::JSPluginArray::canGetItemsForName):
1603         (WebCore::JSPluginArray::nameGetter):
1604         * bindings/js/JSPluginCustom.cpp: Added.
1605         (WebCore::JSPlugin::canGetItemsForName):
1606         (WebCore::JSPlugin::nameGetter):
1607         * bindings/js/kjs_navigator.cpp: Removed.
1608         * bindings/js/kjs_navigator.h: Removed.
1609         * dom/Clipboard.cpp:
1610         * dom/DOMImplementation.cpp:
1611         (WebCore::DOMImplementation::createDocument):
1612         * loader/FrameLoader.cpp:
1613         (WebCore::FrameLoader::shouldUsePlugin):
1614         * page/DOMWindow.cpp:
1615         (WebCore::DOMWindow::clear):
1616         (WebCore::DOMWindow::navigator):
1617         * page/DOMWindow.h:
1618         * page/DOMWindow.idl:
1619         * page/DragController.cpp:
1620         * page/Frame.cpp:
1621         * page/Frame.h:
1622         * page/Navigator.cpp: Added.
1623         (WebCore::Navigator::Navigator):
1624         (WebCore::Navigator::~Navigator):
1625         (WebCore::Navigator::disconnectFrame):
1626         (WebCore::Navigator::appCodeName):
1627         (WebCore::Navigator::appName):
1628         (WebCore::Navigator::appVersion):
1629         (WebCore::Navigator::language):
1630         (WebCore::Navigator::userAgent):
1631         (WebCore::Navigator::platform):
1632         (WebCore::Navigator::plugins):
1633         (WebCore::Navigator::mimeTypes):
1634         (WebCore::Navigator::product):
1635         (WebCore::Navigator::productSub):
1636         (WebCore::Navigator::vendor):
1637         (WebCore::Navigator::vendorSub):
1638         (WebCore::Navigator::cookieEnabled):
1639         (WebCore::Navigator::javaEnabled):
1640         * page/Navigator.h: Added.
1641         (WebCore::Navigator::create):
1642         (WebCore::Navigator::frame):
1643         * page/Navigator.idl: Added.
1644         * page/Page.cpp:
1645         (WebCore::Page::refreshPlugins):
1646         (WebCore::Page::pluginData):
1647         * page/Page.h:
1648         * page/Plugin.h: Removed.
1649         * page/mac/FrameMac.mm:
1650         * page/mac/WebCoreFrameBridge.mm:
1651         (-[WebCoreFrameBridge canProvideDocumentSource]):
1652         * page/mac/WebCoreViewFactory.h:
1653         * page/qt/FrameQt.cpp:
1654         * page/win/FrameWin.cpp:
1655         * platform/gtk/TemporaryLinkStubs.cpp:
1656         * platform/mac/PlugInInfoStoreMac.mm: Removed.
1657         * platform/qt/MIMETypeRegistryQt.cpp:
1658         (WebCore::MIMETypeRegistry::getMIMETypeForExtension):
1659         * plugins/MimeType.cpp: Added.
1660         (WebCore::MimeType::MimeType):
1661         (WebCore::MimeType::~MimeType):
1662         (WebCore::MimeType::type):
1663         (WebCore::MimeType::suffixes):
1664         (WebCore::MimeType::description):
1665         (WebCore::MimeType::enabledPlugin):
1666         * plugins/MimeType.h: Added.
1667         (WebCore::MimeType::create):
1668         * plugins/MimeType.idl: Added.
1669         * plugins/MimeTypeArray.cpp: Added.
1670         (WebCore::MimeTypeArray::MimeTypeArray):
1671         (WebCore::MimeTypeArray::~MimeTypeArray):
1672         (WebCore::MimeTypeArray::length):
1673         (WebCore::MimeTypeArray::item):
1674         (WebCore::MimeTypeArray::canGetItemsForName):
1675         (WebCore::MimeTypeArray::nameGetter):
1676         (WebCore::MimeTypeArray::getPluginData):
1677         * plugins/MimeTypeArray.h: Added.
1678         (WebCore::MimeTypeArray::create):
1679         (WebCore::MimeTypeArray::disconnectFrame):
1680         * plugins/MimeTypeArray.idl: Added.
1681         * plugins/Plugin.cpp: Added.
1682         (WebCore::Plugin::Plugin):
1683         (WebCore::Plugin::~Plugin):
1684         (WebCore::Plugin::name):
1685         (WebCore::Plugin::filename):
1686         (WebCore::Plugin::description):
1687         (WebCore::Plugin::length):
1688         (WebCore::Plugin::item):
1689         (WebCore::Plugin::canGetItemsForName):
1690         (WebCore::Plugin::nameGetter):
1691         * plugins/Plugin.h: Added.
1692         (WebCore::Plugin::create):
1693         * plugins/Plugin.idl: Added.
1694         * plugins/PluginArray.cpp: Added.
1695         (WebCore::PluginArray::PluginArray):
1696         (WebCore::PluginArray::~PluginArray):
1697         (WebCore::PluginArray::length):
1698         (WebCore::PluginArray::item):
1699         (WebCore::PluginArray::canGetItemsForName):
1700         (WebCore::PluginArray::nameGetter):
1701         (WebCore::PluginArray::refresh):
1702         (WebCore::PluginArray::getPluginData):
1703         * plugins/PluginArray.h: Added.
1704         (WebCore::PluginArray::create):
1705         (WebCore::PluginArray::disconnectFrame):
1706         * plugins/PluginArray.idl: Added.
1707         * plugins/PluginData.cpp: Added.
1708         (WebCore::PluginData::PluginData):
1709         (WebCore::PluginData::~PluginData):
1710         (WebCore::PluginData::supportsMimeType):
1711         (WebCore::PluginData::pluginNameForMimeType):
1712         * plugins/PluginData.h: Added.
1713         (WebCore::PluginData::create):
1714         (WebCore::PluginData::disconnectPage):
1715         (WebCore::PluginData::page):
1716         (WebCore::PluginData::plugins):
1717         (WebCore::PluginData::mimes):
1718         * plugins/mac/PluginDataMac.mm: Added.
1719         (WebCore::PluginData::initPlugins):
1720         (WebCore::PluginData::refresh):
1721         * plugins/qt/PluginDataQt.cpp: Added.
1722         (WebCore::PluginData::initPlugins):
1723         * plugins/win/PluginDataWin.cpp: Added.
1724         (WebCore::PluginData::initPlugins):
1725         (WebCore::PluginData::refresh):
1726
1727 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1728
1729         Reviewed by Holger.
1730
1731         Replace two printfs() in the Qt port with notImplemented().
1732
1733         * html/CanvasRenderingContext2D.cpp:
1734         (WebCore::CanvasRenderingContext2D::applyStrokePattern):
1735         (WebCore::CanvasRenderingContext2D::applyFillPattern):
1736
1737 2008-03-10  Simon Hausmann  <hausmann@webkit.org>
1738
1739         Reviewed by Alp.
1740
1741         Compilation fix with gcc 4.3: Include stdio.h for printf.
1742
1743         * html/CanvasRenderingContext2D.cpp:
1744         * html/HTMLCanvasElement.cpp:
1745
1746 2008-03-09  Steve Falkenburg  <sfalken@apple.com>
1747
1748         Stop Windows build if an error occurs in a prior project.
1749
1750         Rubber stamped by Darin.
1751
1752         * WebCore.vcproj/WebCore.vcproj:
1753         * WebCore.vcproj/WebCoreGenerated.vcproj:
1754
1755 2008-03-09  Darin Adler  <darin@apple.com>
1756
1757         * DerivedSources.make: Third try at fixing the build.
1758         * bindings/js/JSRGBColor.cpp: And touching this file.
1759
1760 2008-03-09  Darin Adler  <darin@apple.com>
1761
1762         * DerivedSources.make: One *more* try at fixing the build.
1763
1764 2008-03-09  Darin Adler  <darin@apple.com>
1765
1766         * DerivedSources.make: One more try at fixing the build.
1767
1768 2008-03-09  Darin Adler  <darin@apple.com>
1769
1770         * DerivedSources.make: Re-land the change, fixed, and with an attempt to fix the
1771         bots by removing the incorrect file.
1772
1773 2008-03-09  Oliver Hunt  <oliver@apple.com>
1774
1775         RS=Mark Rowe
1776
1777         Roll out r30909 -- it breaks the build and is a non-trivial fix (according to weinig)
1778
1779         * DerivedSources.make:
1780
1781 2008-03-09  Darin Adler  <darin@apple.com>
1782
1783         Reviewed by Adam.
1784
1785         * DerivedSources.make: Put the list of DOM classes into its own
1786         variable, and generate the JavaScript bindings and Objective-C
1787         bindings dependencies from that. Added some separators to make it
1788         a little easier to see the sections of the file. Moved all the
1789         Mac-specific rules (except for the SVG conditional part) down
1790         to the bottom of the file in a separate section.
1791
1792 2008-03-09  Adam Roben  <aroben@apple.com>
1793
1794         Windows build fix
1795
1796         * WebCore.vcproj/WebCore.vcproj: Make sure all Cairo files are
1797         excluded from all three CG-based configurations: Debug, Release, and
1798         Debug_Internal.
1799
1800 2008-03-08  Mark Rowe  <mrowe@apple.com>
1801
1802         Attempt to fix the Qt build.
1803
1804         * platform/MIMETypeRegistry.cpp:  Add missing include.
1805
1806 2008-03-08  Oliver Hunt  <oliver@apple.com>
1807
1808         Reviewed by Sam W.
1809
1810         Bug 16516: canvas image patterns stop working with some transformations
1811
1812         Simple fix.  We used x/yStep of FLT_MAX to fake a no-repeat-x/y pattern
1813         with CG.  However any transforms involving FLT_MAX immediately get
1814         consumed by the introduced floating point error.  yStep had already been
1815         clamped to a much smaller arbitrary value, and this patch makes us use
1816         that clamp value for xStep as well.
1817
1818         * html/CanvasPattern.cpp:
1819         (WebCore::CanvasPattern::createPattern):
1820
1821 2008-03-08  Oliver Hunt  <oliver@apple.com>
1822
1823         Reviewed by Mitz.
1824
1825         Bug 17728: Canvas.createPattern with null repeat argument throws an exception
1826
1827         Trivial fix, we were calling toString on null which produces the string "null",
1828         we just needed to switch to using valueToStringWithNullCheck rather than 
1829         JSValue::toString directly
1830
1831         Test: fast/canvas/canvas-pattern-behaviour.html
1832
1833         * WebCore/bindings/js/JSCanvasRenderingContext2DCustom.cpp:
1834         (WebCore::JSCanvasRenderingContext2D::createPattern):
1835
1836 2008-03-08  Mark Rowe  <mrowe@apple.com>
1837
1838         Reviewed by Darin Adler.
1839
1840         Fix 64-bit build with GCC 4.2.
1841
1842         * bindings/objc/WebScriptObject.mm: Use NSUInteger in place of unsigned where required.
1843         * platform/mac/SharedBufferMac.mm: Ditto.
1844
1845 2008-03-08  Dan Bernstein  <mitz@apple.com>
1846
1847         Reviewed by Oliver Hunt.
1848
1849         - fix garbage in transparent areas in canvas.toDataURL results
1850
1851         * platform/graphics/cg/ImageBufferCG.cpp:
1852         (WebCore::ImageBuffer::toDataURL): Clear the bitmap context before
1853         painting the canvas image onto it.
1854
1855 2008-03-08  Darin Adler  <darin@apple.com>
1856
1857         Reviewed by Adele.
1858
1859         - eliminate custom highlight methods from WebCoreFrameBridge
1860
1861         * page/Chrome.cpp:
1862         (WebCore::ChromeClient::customHighlightRect): Added.
1863         (WebCore::ChromeClient::paintCustomHighlight): Added.
1864         * page/ChromeClient.h: Added custom highlight functions.
1865         * page/Frame.h: Removed custom highlight functions.
1866         * page/mac/FrameMac.mm: Ditto.
1867         * page/mac/WebCoreFrameBridge.h: Removed custom highlight methods.
1868         * rendering/InlineTextBox.cpp:
1869         (WebCore::InlineTextBox::paintCustomHighlight): Changed code to use
1870         the ChromeClient instead of WebCoreFrameBridge to do the custom highlight.
1871         * rendering/RenderBox.cpp:
1872         (WebCore::RenderBox::paintCustomHighlight): Ditto.
1873         * rendering/RootInlineBox.cpp:
1874         (WebCore::RootInlineBox::addHighlightOverflow): Ditto.
1875         (WebCore::RootInlineBox::paintCustomHighlight): Ditto.
1876
1877 2008-03-07  Stephanie Lewis  <slewis@apple.com>
1878
1879         Reviewed by Oliver.
1880
1881         Fix Windows build.
1882
1883         * platform/graphics/cg/ImageBufferCG.cpp:
1884         (WebCore::ImageBuffer::toDataURL):
1885
1886 2008-03-07  David D. Kilzer  <ddkilzer@apple.com>
1887
1888         Unify concept of enabling Netscape Plug-in API (NPAPI).
1889
1890         Reviewed by Darin.
1891
1892         No test cases since there is no change in functionality.
1893
1894         * DerivedSources.make: Added check for ENABLE_NETSCAPE_PLUGIN_API macro.
1895         If defined as "1", add WebCore.NPAPI.exp to WEBCORE_EXPORT_DEPENDENCIES.
1896         * WebCore.NPAPI.exp: Added.
1897         * WebCore.base.exp: Moved exported NPAPI methods to WebCore.NPAPI.exp.
1898         * WebCore.xcodeproj/project.pbxproj: Removed changes in r30826 (except
1899         comments) since we now handle exported NPAPI methods via DerivedSources.make.
1900
1901         * config.h: Removed USE(NPOBJECT) since we now use ENABLE(NETSCAPE_PLUGIN_API) as
1902         defined in Platform.h.
1903
1904         * bindings/objc/DOM.mm: Replaced USE(NPOBJECT) with ENABLE(NETSCAPE_PLUGIN_API).
1905         (-[DOMElement _NPObject]):
1906
1907         * bridge/NP_jsobject.cpp: Replaced !PLATFORM(DARWIN) || !defined(__LP64__) with
1908         ENABLE(NETSCAPE_PLUGIN_API).
1909         * bridge/NP_jsobject.h: Ditto.
1910         * bridge/c/c_class.cpp: Ditto.
1911         * bridge/c/c_class.h: Ditto.
1912         * bridge/c/c_instance.cpp: Ditto.
1913         * bridge/c/c_instance.h: Ditto.
1914         * bridge/c/c_runtime.cpp: Ditto.
1915         * bridge/c/c_runtime.h: Ditto.
1916         * bridge/c/c_utility.cpp: Ditto.
1917         * bridge/c/c_utility.h: Ditto.
1918         * bridge/npruntime.cpp: Ditto.
1919         * bridge/npruntime_impl.h: Ditto.
1920         * bridge/npruntime_priv.h: Ditto.
1921         * bridge/runtime.cpp: Ditto.
1922         (KJS::Bindings::Instance::createBindingForLanguageInstance):
1923
1924         * html/HTMLPlugInElement.cpp: Replaced USE(NPOBJECT) with ENABLE(NETSCAPE_PLUGIN_API).
1925         (WebCore::HTMLPlugInElement::HTMLPlugInElement):
1926         (WebCore::HTMLPlugInElement::~HTMLPlugInElement):
1927         * html/HTMLPlugInElement.h: Ditto.
1928
1929         * page/Frame.cpp: Replaced USE(NPOBJECT) with ENABLE(NETSCAPE_PLUGIN_API).
1930         (WebCore::Frame::clearScriptObjects):
1931         (WebCore::FramePrivate::FramePrivate): Also added #if ENABLE(NETSCAPE_PLUGIN_API)
1932         guard around m_windowScriptNPObject.
1933         * page/Frame.h: Replaced USE(NPOBJECT) with ENABLE(NETSCAPE_PLUGIN_API).
1934         * page/FramePrivate.h: Added #if ENABLE(NETSCAPE_PLUGIN_API) guard around
1935         m_windowScriptNPObject.
1936         * page/mac/FrameMac.mm: Replaced USE(NPOBJECT) with ENABLE(NETSCAPE_PLUGIN_API).
1937         (WebCore::Frame::createScriptInstanceForWidget):
1938
1939 2008-03-07  Alexey Proskuryakov  <ap@webkit.org>
1940
1941         Reviewed by Darin.
1942
1943         REGRESSION: Korean decoding doesn't support extended EUC-KR.
1944
1945         Test: fast/encoding/char-decoding.html
1946
1947         * platform/text/TextCodecICU.cpp:
1948         (WebCore::TextCodecICU::registerExtendedEncodingNames): Untangle the system of duplicate ICU
1949         encoding names by manually registering windows-939-2000, and mapping all other related
1950         encodings to it.
1951
1952 2008-03-07  Dan Bernstein  <mitz@apple.com>
1953
1954         Reviewed by Stephanie.
1955
1956         - try to fix leaks seen on Tiger after r30840
1957
1958         * css/CSSStyleSelector.cpp:
1959         (WebCore::CSSStyleSelector::~CSSStyleSelector): Use the default operator
1960         delete, rather than arena delete, to deallocate the root default style.
1961
1962 2008-03-07  Pierre-Luc Beaudoin  <pierre-luc.beaudoin@collabora.co.uk>
1963
1964         Reviewed by Alp Toker.
1965
1966         http://bugs.webkit.org/show_bug.cgi?id=17681
1967         GtkLauncher fails to render an element with position: fixed
1968
1969         Implement the required parts of PlatformScreenGtk.
1970
1971         * ChangeLog:
1972         * platform/gtk/PlatformScreenGtk.cpp:
1973         (WebCore::screenDepth):
1974         (WebCore::screenIsMonochrome):
1975         (WebCore::screenRect):
1976
1977 2008-03-07  Oliver Hunt  <oliver@apple.com>
1978
1979         Reviewed by Darin Adler.
1980
1981         Bug 16610: <canvas> restore() removes path segments created before it
1982
1983         The problem here is that WebKit stored the Path as part of the state, so
1984         restore would incorrectly lose changes made to the canvas path.  To match
1985         Firefox and HTML5 we make two real changes:
1986           * Move the context path from the state object directly onto the context.
1987             This is responsible for all the changes to the path manipulation functions
1988           * Add transform tracking to each state -- this is needed to correctly transform
1989             the current path when restore()-ing to a prior state.
1990
1991         Test: fast/canvas/canvas-save-restore-with-path.html
1992
1993         * html/CanvasRenderingContext2D.cpp:
1994         (WebCore::CanvasRenderingContext2D::restore):
1995         (WebCore::CanvasRenderingContext2D::scale):
1996         (WebCore::CanvasRenderingContext2D::rotate):
1997         (WebCore::CanvasRenderingContext2D::translate):
1998         (WebCore::CanvasRenderingContext2D::transform):
1999         (WebCore::CanvasRenderingContext2D::beginPath):
2000         (WebCore::CanvasRenderingContext2D::closePath):
2001         (WebCore::CanvasRenderingContext2D::moveTo):
2002         (WebCore::CanvasRenderingContext2D::lineTo):
2003         (WebCore::CanvasRenderingContext2D::quadraticCurveTo):
2004         (WebCore::CanvasRenderingContext2D::arcTo):
2005         (WebCore::CanvasRenderingContext2D::arc):
2006         (WebCore::CanvasRenderingContext2D::rect):
2007         (WebCore::CanvasRenderingContext2D::clearPathForDashboardBackwardCompatibilityMode):
2008         (WebCore::CanvasRenderingContext2D::fill):
2009         (WebCore::CanvasRenderingContext2D::stroke):
2010         (WebCore::CanvasRenderingContext2D::clip):
2011         (WebCore::CanvasRenderingContext2D::isPointInPath):
2012         * html/CanvasRenderingContext2D.h:
2013
2014 2008-03-07  Oliver Hunt  <oliver@apple.com>
2015
2016         Reviewed by Ada.
2017
2018         Fix for crash caused by FrameLoader incorrectly assuming it has
2019         a RenderWidget
2020
2021         In some circumstances an application embedding a WebView may 
2022         choose to prevent a webview from loading a resource.  If that
2023         resource was requested by an <object> element then we may 
2024         fallback to different content which may not produce a RenderWidget.
2025         Unfortunately FrameLoader::loadSubframe was assuming that if a
2026         renderer was produced it would always be a RenderWidget, and arbitrarily
2027         performed what could be an incorrect cast.  This could then lead to
2028         a crash.
2029
2030         We currently don't have anyway of making a test for this.
2031
2032         * loader/FrameLoader.cpp:
2033         (WebCore::FrameLoader::loadSubframe):
2034
2035 2008-03-07  Samuel Weinig  <sam@webkit.org>
2036
2037         Reviewed by Oliver Hunt.
2038
2039         Fix for http://bugs.webkit.org/show_bug.cgi?id=16673
2040         <canvas> lacks toDataURL()
2041
2042         Tests: fast/canvas/toDataURL-noData.html
2043                fast/canvas/toDataURL-supportedTypes.html
2044
2045         * html/CanvasRenderingContext2D.cpp:
2046         (WebCore::CanvasRenderingContext2D::printSecurityExceptionMessage): Make message non-global.
2047         * html/HTMLCanvasElement.cpp:
2048         (WebCore::HTMLCanvasElement::printSecurityExceptionMessage): Log error message indicating that toDataURL has
2049         been called on a tainted canvas. 
2050         (WebCore::HTMLCanvasElement::toDataURL): This does the tainted canvas check, ensures that the canvas has pixel
2051         data, checks to see if the MIME type is supported.  Unsupported MIME types and the null string (which is made
2052         by passing no argument/null/undefined in JavaScript) are treated as being PNG, as per the spec.  The actual 
2053         toDataURL logic is actually done in the ImageBuffer class.
2054         * html/HTMLCanvasElement.h: Add function declarations.
2055         * html/HTMLCanvasElement.idl: Add function declaration.
2056
2057         * platform/MIMETypeRegistry.cpp:
2058         (WebCore::initializeSupportedImageMIMETypes):
2059         (WebCore::initializeSupportedImageMIMETypesForEncoding):
2060         (WebCore::initializeSupportedJavaScriptMIMETypes):
2061         (WebCore::initializeSupportedNonImageMimeTypes):
2062         (WebCore::initializeSupportedMediaMIMETypes):
2063         (WebCore::initializeMIMETypeRegistry):
2064         (WebCore::MIMETypeRegistry::getMIMETypeForPath):
2065         (WebCore::MIMETypeRegistry::isSupportedImageMIMEType):
2066         (WebCore::MIMETypeRegistry::isSupportedImageResourceMIMEType):
2067         (WebCore::MIMETypeRegistry::isSupportedImageMIMETypeForEncoding):
2068         (WebCore::MIMETypeRegistry::isSupportedJavaScriptMIMEType):
2069         (WebCore::MIMETypeRegistry::isSupportedNonImageMIMEType):
2070         (WebCore::MIMETypeRegistry::isSupportedMediaMIMEType):
2071         (WebCore::MIMETypeRegistry::isJavaAppletMIMEType):
2072         (WebCore::MIMETypeRegistry::getSupportedImageMIMETypes):
2073         (WebCore::MIMETypeRegistry::getSupportedImageResourceMIMETypes):
2074         (WebCore::MIMETypeRegistry::getSupportedImageMIMETypesForEncoding):
2075         (WebCore::MIMETypeRegistry::getSupportedNonImageMIMETypes):
2076         (WebCore::MIMETypeRegistry::getSupportedMediaMIMETypes):
2077         * platform/MIMETypeRegistry.h:
2078         Clean up and add new supportedImageMIMETypesForEncoding set which contains the set of
2079         MIME types the platform knows how to encode. Currently only implemented for CG and Qt.
2080
2081         * platform/graphics/ImageBuffer.h: Add toDataURL method.
2082         * platform/graphics/cairo/ImageBufferCairo.cpp:
2083         (WebCore::ImageBuffer::toDataURL): Add stub.
2084         * platform/graphics/cg/ImageBufferCG.cpp:
2085         (WebCore::ImageBuffer::create):
2086         (WebCore::ImageBuffer::getImageData):
2087         (WebCore::ImageBuffer::putImageData):
2088         (WebCore::ImageBuffer::toDataURL):
2089         Converts the current context to a data: url of the specified MIME type.  This method
2090         unfortunately has to flip the context, resulting in less than optimal code.
2091
2092         * platform/graphics/qt/ImageBufferQt.cpp:
2093         (WebCore::ImageBuffer::toDataURL): Add stub.
2094         * platform/graphics/wx/ImageBufferWx.cpp:
2095         (WebCore::ImageBuffer::toDataURL): Add stub.
2096
2097 2008-03-07  Steve Falkenburg  <sfalken@apple.com>
2098
2099         Build fix.
2100
2101         * WebCore.vcproj/WebCore.vcproj:
2102
2103 2008-03-07  Brent Fulgham  <bfulgham@gmail.com>
2104
2105         Reviewed by Mark Rowe.
2106
2107         Correct build intermediary output
2108         (http://bugs.webkit.org/show_bug.cgi?id=17713)
2109
2110         * WebCore/WebCore.vcproj:  Correct intermediary paths
2111
2112 2008-03-07  Brent Fulgham  <bfulgham@gmail.com>
2113
2114         Reviewed by Steve Falkenburg.
2115
2116         Add Cairo build requirements to WebCore.vcproj under a new
2117         set of targets.  Exclude Cairo elements from normal CG build.
2118         Exclude CG elements from Cairo builds.
2119         (http://bugs.webkit.org/show_bug.cgi?id=17300)
2120
2121         * WebCore.vcproj/WebCore.vcproj:
2122         * WebCore.vcproj/webcore.vsprops: Added.
2123
2124 2008-03-07  Darin Adler  <darin@apple.com>
2125
2126         Reviewed by Adam.
2127
2128         - eliminated WebCoreFrameBridge runOpenPanel
2129
2130         * page/ChromeClient.h: Added runOpenPanel function.
2131         * page/mac/ChromeMac.mm:
2132         (WebCore::ChromeClient::runOpenPanel): Added.
2133         * platform/FileChooser.cpp:
2134         (WebCore::FileChooser::FileChooser): Moved this here. It's no longer platform-specific.
2135         Also start the refcount at 1.
2136         (WebCore::FileChooser::create): Added adoptRef since the refcount no starts at one.
2137         (WebCore::FileChooser::~FileChooser): Moved here. No longer platform-specific.
2138         * platform/FileChooser.h: Removed m_controller, which was Macintosh-specific.
2139         * platform/gtk/FileChooserGtk.cpp: Removed FileChooser constructor and destructor,
2140         since they are no longer platform-specific.
2141         * platform/qt/FileChooserQt.cpp: Ditto.
2142         * platform/win/FileChooserWin.cpp: Ditto.
2143         * platform/wx/TemporaryLinkStubs.cpp: Ditto.
2144         * platform/mac/FileChooserMac.mm:
2145         (WebCore::FileChooser::openFileChooser): Call the chrome client instead of the
2146         bridge to run the open panel. Allows us to get rid of the WebCoreOpenPanelController
2147         class and m_controller data member and move the cosntrutor/destructor to platform-
2148         independent code.
2149
2150 2008-03-07  Adam Roben  <aroben@apple.com>
2151
2152         Add JavaScriptDebugServer
2153
2154         This class is a singleton which allows one or more
2155         JavaScriptDebugListeners to receive callbacks during JavaScript
2156         execution.
2157
2158         Right now all listeners receive callbacks for all Pages in the
2159         process. Eventually we will want to support listeners registering for
2160         callbacks for specific Pages (e.g., the Inspector will want to listen
2161         for execution in just the Page it's inspecting).
2162
2163         Pages notify the JavaScriptDebugServer when they are created so that
2164         it can install itself as the Page's debugger.
2165
2166         Reviewed by Darin.
2167
2168         * GNUMakefile.am: Added new files to project.
2169         * WebCore.pro: Ditto.
2170         * WebCore.vcproj/WebCore.vcproj: Ditto.
2171         * WebCore.xcodeproj/project.pbxproj: Ditto.
2172         * WebCoreSources.bkl: Ditto.
2173         * page/JavaScriptDebugListener.h: Added.
2174         * page/JavaScriptDebugServer.cpp: Added.
2175         (WebCore::toFrame):
2176         (WebCore::JavaScriptDebugServer::shared):
2177         (WebCore::JavaScriptDebugServer::JavaScriptDebugServer):
2178         (WebCore::JavaScriptDebugServer::~JavaScriptDebugServer):
2179         (WebCore::JavaScriptDebugServer::addListener): Registers as the
2180         debugger for all Pages if we're adding our first listener.
2181         (WebCore::JavaScriptDebugServer::removeListener): Deregisters as the
2182         debugger for all Pages if we're removing our last listner.
2183         (WebCore::JavaScriptDebugServer::pageCreated): Registers as the
2184         debugger for the newly created Page if we have any listeners.
2185         (WebCore::dispatchDidParseSource): Helper function.
2186         (WebCore::dispatchFailedToParseSource): Ditto.
2187         (WebCore::JavaScriptDebugServer::sourceParsed): Call
2188         dispatchDidParseSource or dispatchFailedToParseSource depending on
2189         whether there was an error or not.
2190         (WebCore::JavaScriptDebugServer::dispatchFunctionToListeners): Calls
2191         the passed-in JavaScriptExecutionCallback on each listener, guarding
2192         against re-entry.
2193         (WebCore::JavaScriptDebugServer::callEvent): Dispatch didEnterCallFrame.
2194         (WebCore::JavaScriptDebugServer::atStatement): Dispatch willExecuteStatement.
2195         (WebCore::JavaScriptDebugServer::returnEvent): Dispatch willLeaveCallFrame.
2196         (WebCore::JavaScriptDebugServer::exception): Dispatch exceptionWasRaised.
2197         * page/JavaScriptDebugServer.h: Added.
2198         * page/Page.cpp:
2199         (WebCore::Page::Page): Tell the shared JavaScriptDebugServer we were
2200         created so it can register as our debugger if needed.
2201
2202 2008-03-07  Darin Adler  <darin@apple.com>
2203
2204         Reviewed by Brady.
2205
2206         - fix a theoretical problem with the visited-link hash table by avoiding collision
2207           with the special "deleted" value
2208         - improve efficiency of with the visited-link hash table by not hashing twice
2209
2210         * page/PageGroup.cpp:
2211         (WebCore::avoidDeletedValue): Added. Makes sure we never try to use the "all ones"
2212         value, since the hash table uses that for deleted hash table entries.
2213         (WebCore::PageGroup::isLinkVisited): Call avoidDeletedValue before using the hash
2214         value with the HashSet.
2215         (WebCore::PageGroup::addVisitedLink): Ditto.
2216
2217         * page/PageGroup.h: Added a new hash function, AlreadyHashed, for unsigned integer
2218         values. This assumes that the value is already a hash value, and doesn't try to
2219         hash it again. Used this for m_visitedLinkHashes.
2220
2221 2008-03-07  Simon Hausmann  <hausmann@webkit.org>
2222
2223         Fix the Qt build.
2224
2225         * WebCore.pro:
2226
2227 2008-03-06  Sam Weinig  <sam@webkit.org> with a little help from Oliver Hunt  <oliver@apple.com>
2228
2229         Reviewed by Mitz.
2230
2231         Implement the HTML5 canvas tainting rules to prevent potential data leakage
2232
2233         Added originClean to HTMLCanvasElement and CanvasPattern
2234         to track whether a canvas (or pattern) is tainted by remote
2235         data.
2236         Use originClean flag to determine whether getImageData should
2237         return, well, image data.
2238
2239         Test: http/tests/security/canvas-remote-read-remote-image.html
2240
2241         * html/CanvasPattern.cpp:
2242         (WebCore::CanvasPattern::CanvasPattern):
2243         * html/CanvasPattern.h:
2244         * html/CanvasRenderingContext2D.cpp:
2245         (WebCore::CanvasRenderingContext2D::setStrokeStyle):
2246         (WebCore::CanvasRenderingContext2D::setFillStyle):
2247         (WebCore::CanvasRenderingContext2D::checkOrigin):
2248         (WebCore::CanvasRenderingContext2D::drawImage):
2249         (WebCore::CanvasRenderingContext2D::drawImageFromRect):
2250         (WebCore::CanvasRenderingContext2D::createPattern):
2251         (WebCore::CanvasRenderingContext2D::printSecurityExceptionMessage):
2252         (WebCore::CanvasRenderingContext2D::getImageData):
2253         * html/CanvasRenderingContext2D.h:
2254         * html/HTMLCanvasElement.cpp:
2255         (WebCore::HTMLCanvasElement::HTMLCanvasElement):
2256         * html/HTMLCanvasElement.h:
2257         (WebCore::HTMLCanvasElement::setOriginTainted):
2258         (WebCore::HTMLCanvasElement::originClean):
2259
2260 2008-03-06  Anders Carlsson  <andersca@apple.com>
2261
2262         Reviewed by Jon.
2263
2264         Templatize the JNI call code to reduce the amount of code that has
2265         to be duplicated.
2266
2267         * bridge/jni/jni_class.cpp:
2268         (JavaClass::JavaClass):
2269         * bridge/jni/jni_instance.cpp:
2270         (JavaInstance::stringValue):
2271         (JavaInstance::numberValue):
2272         (JavaInstance::booleanValue):
2273         (JavaInstance::invokeMethod):
2274         * bridge/jni/jni_jsobject.cpp:
2275         (JavaJSObject::convertJObjectToValue):
2276         * bridge/jni/jni_runtime.cpp:
2277         (JavaField::JavaField):
2278         (JavaMethod::JavaMethod):
2279         * bridge/jni/jni_utility.cpp:
2280         * bridge/jni/jni_utility.h:
2281         (KJS::Bindings::):
2282         (KJS::Bindings::callJNIMethodIDA):
2283         (KJS::Bindings::callJNIMethodV):
2284         (KJS::Bindings::callJNIMethod):
2285         (KJS::Bindings::callJNIStaticMethod):
2286
2287 2008-03-06  Darin Adler  <darin@apple.com>
2288
2289         Reviewed by Mitz.
2290
2291         - fix regression test failures from the visited-link change
2292
2293         * WebCore.base.exp: Export PageGroup::setShouldTrackVisitedLinks.
2294         * page/PageGroup.cpp:
2295         (WebCore::PageGroup::addVisitedLink): Do nothing and return early
2296         if shouldTrackVisitedLinks is false.
2297         (WebCore::PageGroup::removeVisitedLinks): Reset m_visitedLinksPopulated
2298         so the next time a link is queried this will be populated from history.
2299         (WebCore::PageGroup::setShouldTrackVisitedLinks): Added.
2300         * page/PageGroup.h: Added setShouldTrackVisitedLinks. This is global
2301         for now, but it would be better if it was per-page-group instead.
2302
2303 2008-03-06  Adele Peterson  <adele@apple.com>
2304
2305         Reviewed by Darin.
2306
2307         Fixes for for <rdar://problem/5785892> Implement activeElement attribute for HTMLDocument (HTML5)
2308         and <rdar://problem/5785895> Implement hasFocus() for HTMLDocument (HTML5)
2309
2310         Tests: fast/dom/HTMLDocument/activeElement.html
2311                fast/dom/HTMLDocument/hasFocus.html
2312
2313         * html/HTMLDocument.cpp:
2314         (WebCore::HTMLDocument::activeElement): Added. Returns the focused element, or the body element if nothing's focused.
2315         (WebCore::HTMLDocument::hasFocus): Added. Returns whether or not the document has focus (inclusive of sub-frames).
2316         * html/HTMLDocument.h: Added methods for activeElement and hasFocus.
2317         * html/HTMLDocument.idl: Added definitions for activeElement and hasFocus.
2318
2319 2008-03-06  Dan Bernstein  <mitz@apple.com>
2320
2321         Reviewed by Darin Adler.
2322
2323         - fix <rdar://problem/5741981> 154008 WebKit: Some asian language font glyphs are not shown (in Mail and Entourage)
2324
2325         Test: fast/text/soft-hyphen-3.html
2326
2327         * rendering/bidi.cpp:
2328         (WebCore::checkMidpoints):
2329         (WebCore::RenderBlock::findNextLineBreak): Made 'pos' unsigned. Made the
2330         midpoint after a hyphen always be a valid iterator, not allowing an
2331         offset past the end of a text node. Changed the check for consecutive
2332         soft hyphens to account for that.
2333
2334 2008-03-06  Darin Adler  <darin@apple.com>
2335
2336         - try to fix Wx build
2337
2338         * WebCoreSources.bkl: Added PageGroup.cpp.
2339
2340 2008-03-06  Darin Adler  <darin@apple.com>
2341
2342         - fix some builds
2343
2344         * GNUmakefile.am: Added PageGroup.cpp.
2345         * WebCore.base.exp: Removed WebCoreHistory.
2346         * WebCore.pro: Added PageGroup.cpp.
2347
2348 2008-03-06  Alexey Proskuryakov  <ap@webkit.org>
2349
2350         Reviewed by Darin.
2351
2352         <rdar://problem/5687269> Need to create a Collator abstraction for WebCore and JavaScriptCore
2353         
2354         * ForwardingHeaders/wtf/unicode/Collator.h: Added.
2355         * xml/XSLTUnicodeSort.cpp:
2356         (WebCore::xsltUnicodeSortFunction):
2357         * xml/XSLTUnicodeSort.h:
2358
2359 2008-03-06  Darin Adler  <darin@apple.com>
2360
2361         Reviewed by Mitz.
2362
2363         - fix http://bugs.webkit.org/show_bug.cgi?id=17526
2364           REGRESSION: iframes are added to Safari's History menu
2365           by separating the visited link machinery from global history
2366
2367         This should also make page loading faster due to more efficient visited link coloring.
2368
2369         * WebCore.base.exp: Updated.
2370         * WebCore.vcproj/WebCore.vcproj: Added PageGroup.h/cpp, removed GlobalHistory.h/cpp.
2371         * WebCore.xcodeproj/project.pbxproj: Ditto. Also removed WebCoreHistory.h/m.
2372
2373         * css/CSSStyleSelector.cpp: Updated includes.
2374         (WebCore::CSSStyleSelector::initElementAndPseudoState): Eliminated code to set
2375         currentEncodedURL.
2376         (WebCore::checkPseudoState): Moved most of the code inside a new
2377         PageGroup::isLinkVisited function.
2378         (WebCore::CSSStyleSelector::canShareStyleWithElement): Tightened code a bit by using
2379         references and only getting colors when needed.
2380         (WebCore::CSSStyleSelector::getColorFromPrimitiveValue): Ditto.
2381         * css/CSSStyleSelector.h: Removed EncodedURL, m_encodedURL, and setEncodedURL.
2382
2383         * dom/Document.cpp:
2384         (WebCore::Document::attach): Removed call to setEncodedURL.
2385         (WebCore::Document::setURL): Ditto.
2386         (WebCore::Document::recalcStyleSelector): Ditto.
2387
2388         * loader/FrameLoader.cpp:
2389         (WebCore::FrameLoader::addBackForwardItemClippedAtTarget): Changed code to use
2390         early exit idiom to be a little more readable.
2391         (WebCore::FrameLoader::urlsMatchItem): Change to use a reference for slightly
2392         better efficiency.
2393         (WebCore::FrameLoader::goToItem): Use early exit idiom to be a little more
2394         readable.
2395         (WebCore::FrameLoader::updateHistoryForStandardLoad): Moved history code back
2396         in here and got rid of the helper function updateGlobalHistory, restoring the
2397         logic before r30549. Also added a call to the new addVisitedLink function.
2398         (WebCore::FrameLoader::updateHistoryForClientRedirect): Added code to call
2399         addVisitedLink here.
2400         (WebCore::FrameLoader::updateHistoryForBackForwardNavigation): Removed comment.
2401         (WebCore::FrameLoader::updateHistoryForReload): Removed call to
2402         updateGlobalHistory; we can just go without updating global history or
2403         visited links here, at least for now, since it's not clear that a reload
2404         is a "history event".
2405         (WebCore::FrameLoader::updateHistoryForRedirectWithLockedHistory): Moved
2406         history code back where it was, and added the call to addVisitedLink, just
2407         as in updateHistoryForStandardLoad above.
2408         * loader/FrameLoader.h: Removed updateGlobalHistory function.
2409
2410         * page/Chrome.cpp:
2411         (WebCore::ChromeClient::populateVisitedLinks): Added. Empty placeholder so we
2412         don't have to implement this for every port all at once.
2413         (WebCore::PageGroupLoadDeferrer::PageGroupLoadDeferrer): Changed to use the
2414         new PageGroup class.
2415         * page/ChromeClient.h: Added populateVisitedLinks function, used to fill the
2416         visited links set from the global history at application startup time.
2417
2418         * page/FrameTree.cpp:
2419         (WebCore::FrameTree::find): Updated to use the new PageGroup class.
2420
2421         * page/GlobalHistory.h: Removed.
2422         * page/win/GlobalHistoryWin.cpp: Removed.
2423         * page/mac/GlobalHistoryMac.mm: Removed.
2424         * platform/mac/WebCoreHistory.h: Removed.
2425         * platform/mac/WebCoreHistory.m: Removed.
2426         * platform/win/WebCoreHistory.cpp: Removed.
2427         * platform/win/WebCoreHistory.h: Removed.
2428
2429         * page/Page.cpp:
2430         (WebCore::Page::Page): Set m_group to 0.
2431         (WebCore::Page::setGroupName): Set up m_group. If the page is not in any
2432         group, set it to 0 for now to postpone the cost of creating a group.
2433         (WebCore::Page::initGroup): Added. Sets m_group to point to a single-page
2434         group; used when getting a group.
2435         (WebCore::Page::removeAllVisitedLinks): Added. Calls removeVisitedLinks
2436         on all page groups.
2437         * page/Page.h: Moved enums inside the WebCore namespace. Removed the
2438         frameNamespace function and instead added the group and groupPtr functions.
2439
2440         * page/PageGroup.cpp: Added. Contains all the visited code from the
2441         CSSStyleSelector in the isVisitedLink function, but more efficient because
2442         we don't allocate memory for the buffer.
2443         * page/PageGroup.h: Added.
2444
2445         * platform/gtk/TemporaryLinkStubs.cpp: Removed historyContains.
2446         * platform/qt/TemporaryLinkStubs.cpp: Removed unneeded include.
2447         * platform/wx/TemporaryLinkStubs.cpp: Removed historyContains.
2448
2449 2008-03-06  Mark Rowe  <mrowe@apple.com>
2450
2451         Fix 64-bit Mac build.
2452
2453         * WebCore.xcodeproj/project.pbxproj:  Exclude _NPN symbols from the exports list as they
2454         are compiled out of 64-bit builds.
2455
2456 2008-03-06  Mark Rowe  <mrowe@apple.com>
2457
2458         Leopard build fix.
2459
2460         * WebCore.base.exp:
2461
2462 2008-03-05  Kevin Ollivier  <kevino@theolliviers.com>
2463
2464         Fix the wx build after the bindings move.
2465
2466         * WebCoreSources.bkl:
2467         * webcore-base.bkl:
2468         * webcore-wx.bkl:
2469
2470 2008-03-05  Dan Bernstein  <mitz@apple.com>
2471
2472         Reviewed by Adele Peterson.
2473
2474         - fix "background-position: inherit"
2475
2476         * css/CSSStyleSelector.cpp:
2477         Made HANDLE_MULTILAYER_INHERIT_AND_INITIAL fall through and added
2478         a return statement in HANDLE_MULTILAYER_VALUE. Also removed an unused
2479         macro.
2480
2481 2008-03-05  Alp Toker  <alp@atoker.com>
2482
2483         Add a missing make dependency for derived sources to improve
2484         autotools build dependency tracking.
2485
2486         Issue spotted by Ori Bernstein.
2487
2488         * GNUmakefile.am:
2489
2490 2008-03-05  Alp Toker  <alp@atoker.com>
2491
2492         GTK+ build fix for breakage introduced in r30800.
2493
2494         Track moved bridge sources from JavaScriptCore to WebCore.
2495
2496         * GNUmakefile.am:
2497
2498 2008-03-05  Justin Garcia  <justin.garcia@apple.com>
2499
2500         Reviewed by Darin.
2501
2502         One part of fix for:
2503         <rdar://problem/5780697> Copying content with percentage based rules in a style sheet will cause fidelity issues
2504
2505         * editing/markup.cpp:
2506         (WebCore::appendStartMarkup): Styles from matched rules should take precedence over those in
2507         inline style declarations, not the other way around. 
2508
2509 2008-03-05  Anders Carlsson  <andersca@apple.com>
2510
2511         Reviewed by Darin.
2512
2513         Move JNI specific code from runtime_root over to jni_jsobject, where it is used.
2514
2515         * bridge/jni/jni_jsobject.cpp:
2516         (completedJavaScriptAccess):
2517         (initializeJavaScriptAccessLock):
2518         (lockJavaScriptAccess):
2519         (unlockJavaScriptAccess):
2520         (dispatchToJavaScriptThread):
2521         (performJavaScriptAccess):
2522         (JavaJSObject::initializeJNIThreading):
2523         (isJavaScriptThread):
2524         (JavaJSObject::invoke):
2525         * bridge/jni/jni_jsobject.h:
2526         * bridge/runtime_root.cpp:
2527         * bridge/runtime_root.h:
2528         * page/mac/WebCoreFrameBridge.mm:
2529         (-[WebCoreFrameBridge init]):
2530
2531 2008-03-05  Darin Adler  <darin@apple.com>
2532
2533         Reviewed by Sam.
2534
2535         - add functions giving offsets within a KURL, slated to replace the
2536           EncodedURL object in CSSStyleSelector (in a future "visited link" change)
2537         - changed all KURL data members names to use the traditional m_ prefix
2538         - initialize all members to 0 in invalid KURLs rather than having all
2539           functions check m_isValid
2540
2541         * platform/KURL.cpp:
2542         (WebCore::KURL::invalidate): Added. Initializes all the fields except for
2543         m_string to the "invalid" values. For use in the empty constructor and
2544         in the init and parse functions.
2545         (WebCore::KURL::init): Tweaked comments. Changed all code paths that return
2546         early to use the invalidate() function. Updated for member variable name
2547         changes.
2548         (WebCore::KURL::hasPath): Updated for member variable name changes.
2549         Remove now-unneeded check of m_isValid.
2550         (WebCore::KURL::lastPathComponent): Ditto.
2551         (WebCore::KURL::protocol): Ditto.
2552         (WebCore::KURL::host): Ditto.
2553         (WebCore::KURL::port): Ditto.
2554         (WebCore::KURL::pass): Ditto.
2555         (WebCore::KURL::user): Ditto.
2556         (WebCore::KURL::ref): Ditto.
2557         (WebCore::KURL::hasRef): Ditto.
2558         (WebCore::KURL::protocolIs): Ditto.
2559         (WebCore::KURL::query): Ditto.
2560         (WebCore::KURL::path): Ditto.
2561         (WebCore::KURL::setProtocol): Ditto.
2562         (WebCore::KURL::setHost): Ditto.
2563         (WebCore::KURL::setPort): Ditto.
2564         (WebCore::KURL::setHostAndPort): Ditto.
2565         (WebCore::KURL::setUser): Ditto.
2566         (WebCore::KURL::setPass): Ditto.
2567         (WebCore::KURL::setRef): Ditto.
2568         (WebCore::KURL::setQuery): Ditto.
2569         (WebCore::KURL::setPath): Ditto.
2570         (WebCore::KURL::prettyURL): Ditto.
2571         (WebCore::copyPathRemovingDots): Removed braces to match our code style.
2572         (WebCore::KURL::parse): Changed all code paths that return early to use
2573         the invalidate function. Moved code to set m_isValid to true to the very
2574         end of the function. Removed braces to match our code style. Removed an
2575         extra copy of the path/query/fragment code (there were two identical copies
2576         in the two sides of an if statement). Removed some commented-out code.
2577         Reversed an if statment. Added code to set the new m_pathAfterLastSlash
2578         field. Updated for member variable name changes.
2579         (WebCore::equalIgnoringRef): Updated for member variable name changes.
2580         (WebCore::KURL::isHierarchical): Ditto.
2581
2582         * platform/KURL.h: Added a FIXME about ref vs. fragment. Made the empty
2583         constructor inline and called the new invalidate function. Added new
2584         pathStart, pathEnd, and pathAfterLastSlash functions, for use in the
2585         new visited link code. Added an invalidate function. Renamed all the
2586         data members to use the m_ prefix.
2587
2588         * WebCore.base.exp: Updated.
2589
2590 2008-03-05  Anders Carlsson  <andersca@apple.com>
2591
2592         Reviewed by Sam.
2593
2594         * WebCore.xcodeproj/project.pbxproj:
2595         Change jni_jsobject.cpp to be Obj-C++ for now. The plan is to merge 
2596         this with jni_objc.mm and create jni_jsobject.mm.
2597         
2598         * bridge/jni/jni_jsobject.cpp:
2599         (createRootObject):
2600         Move createRootObject here from WebCoreFrameBridge.
2601         
2602         (JavaJSObject::createNative):
2603         Call the newly added createRootObject function.
2604         
2605         * bridge/runtime_root.cpp:
2606         (KJS::Bindings::RootObject::initializeJNIThreading):
2607         * bridge/runtime_root.h:
2608         setCreateRootObject no longer takes a root object, rename it to initializeJNIThreading.
2609
2610         * page/mac/FrameMac.mm:
2611         (WebCore::Frame::createScriptInstanceForWidget):
2612         Just call Frame::createRootObject here.
2613         
2614         * page/mac/WebCoreFrameBridge.mm:
2615         (-[WebCoreFrameBridge init]):
2616         Call initializeJNIThreading.
2617
2618 2008-03-05  Anders Carlsson  <andersca@apple.com>
2619
2620         Reviewed by Sam.
2621
2622         Change some static class variables to be regular static variables,
2623         making it easier to move the chunk of mac-specific code out of runtime_root.[cpp|h]
2624
2625         * bridge/runtime_root.cpp:
2626         (KJS::Bindings::completedJavaScriptAccess):
2627         (KJS::Bindings::RootObject::dispatchToJavaScriptThread):
2628         (KJS::Bindings::performJavaScriptAccess):
2629         (KJS::Bindings::RootObject::createRootObject):
2630         (KJS::Bindings::RootObject::runLoop):
2631         (KJS::Bindings::RootObject::setCreateRootObject):
2632         * bridge/runtime_root.h:
2633
2634 2008-03-05  Brent Fulgham <bfulgham@gmail.com>
2635
2636         Reviewed by Adam Roben.
2637
2638         Modify source files to use the USE(SAFARI_THEME) macro, rather than
2639         USE_SAFARI_THEME.  (http://bugs.webkit.org/show_bug.cgi?id=17683)
2640
2641         * WebCore/platform/win/PlatformScrollBarSafari.cpp
2642         * WebCore/rendering/RenderThemeSafari.cpp
2643         * WebCore/rendering/RenderThemeSafari.h
2644         * config.h: Move definition of WTF_USE_SAFARI_THEME here 
2645
2646 2008-03-05  Brady Eidson  <beidson@apple.com>
2647
2648         Reviewed by Alexey and Mark Rowe
2649
2650         Fix for <rdar://problem/5778247> - Reproducible crash on storage/execute-sql-args.html
2651
2652         DatabaseThread::unscheduleDatabaseTasks() manually filters through a MessageQueue,
2653         removing particular items for Databases that were shutting down.
2654
2655         This filtering operation is not atomic, and therefore causes a race condition with the
2656         database thread waking up and reading from the message queue.  
2657
2658         The end result was an attempt to dereference a null DatabaseTask.  Timing-wise, this never
2659         seemed to happen in a debug build, otherwise an assertion would've caught it.  Replacing that
2660         assertion with a crash in a release build is what revealed this bug.
2661
2662         The fix for the above symptom was entirely in WTF::MessageQueue in JSCore.  With this fix in 
2663         place, another crash popped up in the layout tests that was related to dereferencing a 
2664         deallocated object - simply because SQLTransaction had a raw pointer to it's Database object 
2665         when it needed to be a ref pointer.
2666
2667         * storage/SQLTransaction.cpp:
2668         (WebCore::SQLTransaction::runCurrentStatement):
2669         * storage/SQLTransaction.h: Change m_database to be a RefPtr
2670         (WebCore::SQLTransaction::database):
2671
2672 2008-03-05  Mark Rowe  <mrowe@apple.com>
2673
2674         Build fix.
2675
2676         * WebCore.base.exp:  Remove symbol that no longer exists from the exports file.
2677
2678 2008-03-05  Adam Roben  <aroben@apple.com>
2679
2680         Export a header/symbol for WebKit
2681
2682         Reviewed by Kevin M.
2683
2684         * WebCore.base.exp:
2685         * WebCore.xcodeproj/project.pbxproj:
2686
2687 2008-03-05  Adam Roben  <aroben@apple.com>
2688
2689         Move WebCoreScriptDebugger up to WebKit
2690
2691         Reviewed by Darin.
2692
2693         * WebCore.base.exp: Exported some functions used by
2694         WebCoreScriptDebugger, and sorted the list.
2695         * WebCore.xcodeproj/project.pbxproj: Removed
2696         WebCoreScriptDebugger.{h,mm} from the project and marked
2697         a few headers private so that WebKit can use them.
2698         * page/mac/WebCoreScriptDebugger.h: Removed.
2699         * page/mac/WebCoreScriptDebugger.mm: Removed.
2700
2701 2008-03-05  Anders Carlsson  <andersca@apple.com>
2702
2703         Build bridge/. Copy some headers over to WebKit as part of the post-build step.
2704         
2705         * WebCore.vcproj/WebCore.vcproj:
2706
2707 2008-03-05  Anders Carlsson  <andersca@apple.com>
2708
2709         Reviewed by Geoff.
2710
2711         * WebCore.base.exp:
2712         Add the NPN and KJS methods.
2713         
2714         * WebCore.xcodeproj/project.pbxproj:
2715         Bring in bridge/
2716
2717         * config.h:
2718         Add HAVE_JNI define.
2719         
2720         * bindings/js/kjs_html.cpp:
2721         * bindings/objc/DOMInternal.mm:
2722         * bindings/objc/DOMUtility.mm:
2723         * bindings/objc/WebScriptObject.mm:
2724         * html/HTMLAppletElement.cpp:
2725         * html/HTMLEmbedElement.cpp:
2726         * html/HTMLObjectElement.cpp:
2727         * html/HTMLPlugInElement.cpp:
2728         * page/Frame.cpp:
2729         * page/mac/FrameMac.mm:
2730         * page/mac/WebCoreFrameBridge.mm:
2731         * page/mac/WebCoreScriptDebugger.mm:
2732         * plugins/win/PluginViewWin.cpp:
2733         Include file changes.
2734
2735 2008-03-04  Anders Carlsson  <andersca@apple.com>
2736
2737         Reviewed by Sam.
2738
2739         Rewrite NPRuntime string conversion routines to use WebCore::String
2740         
2741         * bridge/NP_jsobject.cpp:
2742         (_NPN_Evaluate):
2743         * bridge/c/c_utility.cpp:
2744         (KJS::Bindings::convertUTF8ToUTF16WithLatin1Fallback):
2745         (KJS::Bindings::convertNPVariantToValue):
2746         (KJS::Bindings::convertNPStringToUTF16):
2747         (KJS::Bindings::identifierFromNPIdentifier):
2748         * bridge/c/c_utility.h:
2749
2750 2008-03-05  Oliver Hunt  <oliver@apple.com>
2751
2752         Reviewed by Alexey P.
2753
2754         Small performance improvement to putImageData (3-5% on assignment in my tests)
2755
2756         * html/CanvasPixelArray.h:
2757         (WebCore::CanvasPixelArray::set):
2758
2759 2008-03-04  Sam Weinig  <sam@webkit.org>
2760
2761         Reviewed by Adele.
2762
2763         * bindings/js/JSXMLHttpRequest.h: Remove unnecessary override of toBoolean.
2764
2765 2008-03-04  Maciej Stachowiak  <mjs@apple.com>
2766
2767         Reviewed by Sam and Oliver.
2768
2769         - fixed http://bugs.webkit.org/show_bug.cgi?id=16289
2770         - fixed Acid3 tests 26 and 27 (not exactly the same issue but related)
2771
2772         * bindings/js/JSNodeCustom.cpp:
2773         (WebCore::JSNode::mark): When marking a node that's in-document,
2774         mark the owner document if it hasn't been already. This means holding on
2775         to a single node from an unreferenced document now keeps the whole document alive.
2776         
2777         We are now at 90/100 on Acid3.
2778
2779 2008-03-04  Sam Weinig  <sam@webkit.org>
2780
2781         Qt build fix.
2782
2783         * page/qt/FrameQt.cpp:
2784
2785 2008-03-04  Sam Weinig  <sam@webkit.org>
2786
2787         Reviewed by Mark Rowe.
2788
2789         Rename kjs_window to JSDOMWindowBase.
2790
2791         - Remove all unnecessary includes of JSDOMWindowBase.h, we prefer including
2792           JSDOMWindow.h
2793
2794         * ChangeLog:
2795         * DerivedSources.make:
2796         * GNUmakefile.am:
2797         * WebCore.pro:
2798         * WebCore.vcproj/WebCore.vcproj:
2799         * WebCore.xcodeproj/project.pbxproj:
2800         * WebCoreSources.bkl:
2801         * bindings/js/JSCustomVoidCallback.cpp:
2802         * bindings/js/JSCustomXPathNSResolver.cpp:
2803         * bindings/js/JSDOMWindowBase.cpp: Copied from bindings/js/kjs_window.cpp.
2804         * bindings/js/JSDOMWindowBase.h: Copied from bindings/js/kjs_window.h.
2805         * bindings/js/JSDOMWindowCustom.cpp:
2806         * bindings/js/JSDatabaseCustom.cpp:
2807         * bindings/js/JSEventTargetBase.cpp:
2808         * bindings/js/JSEventTargetBase.h:
2809         * bindings/js/JSEventTargetNode.cpp:
2810         * bindings/js/JSHTMLDocumentCustom.cpp:
2811         * bindings/js/JSHTMLFrameSetElementCustom.cpp:
2812         * bindings/js/JSHistoryCustom.cpp:
2813         * bindings/js/JSLocation.cpp:
2814         * bindings/js/JSSQLTransactionCustom.cpp:
2815         * bindings/js/JSXMLHttpRequest.cpp:
2816         * bindings/js/ScheduledAction.cpp:
2817         * bindings/js/kjs_binding.cpp:
2818         * bindings/js/kjs_events.cpp:
2819         * bindings/js/kjs_navigator.cpp:
2820         * bindings/js/kjs_proxy.cpp:
2821         * bindings/js/kjs_window.cpp: Removed.
2822         * bindings/js/kjs_window.h: Removed.
2823         * bindings/scripts/CodeGeneratorJS.pm:
2824         * history/CachedPage.cpp:
2825         * loader/FrameLoader.cpp:
2826         * page/Chrome.cpp:
2827         * page/InspectorController.cpp:
2828         * page/mac/FrameMac.mm:
2829         * page/mac/WebCoreFrameBridge.mm:
2830         * page/qt/FrameQt.cpp:
2831         * page/win/FrameWin.cpp:
2832         * plugins/win/PluginViewWin.cpp:
2833
2834 2008-03-04  Mark Rowe  <mrowe@apple.com>
2835
2836         Speculative Qt build fix.
2837
2838         * platform/qt/PasteboardQt.cpp:
2839
2840 2008-03-04  Anders Carlsson  <andersca@apple.com>
2841
2842         Reviewed by Sam.
2843
2844         Update include paths. This code is not used yet.
2845
2846         * bridge/NP_jsobject.cpp:
2847         * bridge/c/c_class.cpp:
2848         * bridge/c/c_instance.cpp:
2849         * bridge/c/c_utility.cpp:
2850         (KJS::Bindings::convertUTF8ToUTF16WithLatin1Fallback):
2851         #if 0 this out for now. 
2852         
2853         * bridge/jni/jni_class.cpp:
2854         * bridge/jni/jni_jsobject.cpp:
2855         * bridge/jni/jni_objc.mm:
2856         * bridge/jni/jni_runtime.cpp:
2857         * bridge/jni/jni_utility.cpp:
2858         * bridge/jni/jni_utility.h:
2859         * bridge/npruntime.cpp:
2860         * bridge/objc/WebScriptObject.h:
2861         * bridge/objc/objc_class.h:
2862         * bridge/objc/objc_instance.h:
2863         * bridge/objc/objc_runtime.h:
2864         * bridge/objc/objc_utility.h:
2865         * bridge/objc/objc_utility.mm:
2866         * bridge/runtime.cpp:
2867         * bridge/runtime.h:
2868         * bridge/runtime_array.cpp:
2869         * bridge/runtime_array.h:
2870         * bridge/runtime_method.cpp:
2871         * bridge/runtime_method.h:
2872         * bridge/runtime_object.cpp:
2873         * bridge/runtime_object.h:
2874         * bridge/runtime_root.cpp:
2875         * bridge/runtime_root.h:
2876
2877 2008-03-04  Dan Bernstein  <mitz@apple.com>
2878
2879         Reviewed by Darin Adler.
2880
2881         - fix http://bugs.webkit.org/show_bug.cgi?id=17676
2882           <rdar://problem/5781091> REGRESSION (r30240-r30267): href attribute values with non-ASCII characters in the host part do not work
2883
2884         Test: fast/encoding/url-host-name-non-ascii.html
2885
2886         * platform/KURL.cpp:
2887         (WebCore::appendEncodedHostname): Added an early return in the all-ASCII
2888         case to avoid copying the host name twice and corrected the error
2889         checking after calling uidna_IDNToASCII().
2890
2891 2008-03-04  Sam Weinig  <sam@webkit.org>
2892
2893         Reviewed by Dan Bernstein.
2894
2895         Use JSDOMWindow exclusively instead of JSDOMWindowBase.
2896
2897         * bindings/js/ScheduledAction.cpp:
2898         (WebCore::ScheduledAction::execute):
2899         * bindings/js/ScheduledAction.h:
2900         * bindings/js/kjs_window.cpp:
2901         (WebCore::JSDOMWindowBase::timerFired):
2902
2903 2008-03-04  Timothy Hatcher  <timothy@apple.com>
2904
2905         Reviewed by Darin Adler.
2906
2907         <rdar://problem/5720160> Browser windows "do nothing" while modal
2908         dialog or menu is up due to run loop modes (or while scrolling)
2909
2910         Adds a new SchedulePair object that holds a runloop and the mode to use.
2911         A HashSet of SchedulePairs is tracked by Page so it can be used for resource
2912         loading and, in the future, maybe SharedTimerMac.
2913
2914         * WebCore.base.exp: Add new exports for WebKit.
2915         * WebCore.xcodeproj/project.pbxproj: Add new files.
2916         * loader/mac/DocumentLoaderMac.cpp: Added.
2917         (WebCore::scheduleAll): Call schedule all the ResourceLoader handles.
2918         (WebCore::unscheduleAll): Call unschedule all the ResourceLoader handles.
2919         (WebCore::DocumentLoader::schedule): Schedule all the ResourceLoaders owned by the DocumentLoader.
2920         (WebCore::DocumentLoader::unschedule): Unschedule all the ResourceLoaders owned by the DocumentLoader.
2921         * loader/DocumentLoader.h:
2922         * page/Page.h:
2923         (WebCore::Page::scheduledRunLoopPairs): Return m_scheduledRunLoopPairs.
2924         * page/mac/PageMac.cpp:
2925         (WebCore::Page::addSchedulePair): Add a SchedulePair to m_scheduledRunLoopPairs.
2926         (WebCore::Page::removeSchedulePair): Removes a SchedulePair from m_scheduledRunLoopPairs.
2927         * platform/cf/SchedulePair.cpp: Added.
2928         * platform/cf/SchedulePair.h: Added.
2929         * platform/mac/SchedulePairMac.mm: Added.
2930         * platform/network/ResourceHandle.h:
2931         * platform/network/mac/FormDataStreamMac.mm:
2932         (WebCore::advanceCurrentStream): Use the new SchedulePair.
2933         (WebCore::formCreate): Ditto.
2934         (WebCore::formFinalize): Ditto.
2935         (WebCore::formSchedule): Ditto.
2936         (WebCore::formUnschedule): Ditto.
2937         * platform/network/mac/ResourceHandleMac.mm:
2938         (WebCore::ResourceHandle::start): Schedule the connection with all the SchedulePairs
2939         that Page holds. If Page has no SchedulePairs, schedule with the current runloop, and
2940         pick the mode based on ResourceHandle::loadsDuringCommonRunLoopModes.
2941         (WebCore::ResourceHandle::schedule):
2942         (WebCore::ResourceHandle::unschedule):
2943
2944 2008-03-04  Sam Weinig  <sam@webkit.org>
2945
2946         Reviewed by Darin Adler.
2947
2948         Rename kjs_css to JSRGBColor.
2949
2950         * DerivedSources.make:
2951         * GNUmakefile.am:
2952         * WebCore.pro:
2953         * WebCore.vcproj/WebCore.vcproj:
2954         * WebCore.xcodeproj/project.pbxproj:
2955         * WebCoreSources.bkl:
2956         * bindings/js/JSRGBColor.cpp: Copied from bindings/js/kjs_css.cpp.
2957         * bindings/js/JSRGBColor.h: Copied from bindings/js/kjs_css.h.
2958         * bindings/js/kjs_css.cpp: Removed.
2959         * bindings/js/kjs_css.h: Removed.
2960         * bindings/js/kjs_window.cpp:
2961         * bindings/objc/DOMUtility.mm:
2962         * bindings/scripts/CodeGeneratorJS.pm:
2963
2964 2008-03-04  Anders Carlsson  <andersca@apple.com>
2965
2966         Fix 64-bit build.
2967         
2968         * html/HTMLPlugInElement.cpp:
2969
2970 2008-03-04  Nikolas Zimmermann  <zimmermann@kde.org>
2971
2972         Reviewed by Eric & David.
2973
2974         Fixes: http://bugs.webkit.org/show_bug.cgi?id=17078
2975
2976         Fix getSubStringLength() handling, verified by Acid3 test 77.
2977         Brings up Acid3 score to 88/100.
2978
2979         Added test: svg/custom/acid3-test-77.html
2980                     svg/custom/getSubStringLength.html
2981
2982         * svg/SVGTextContentElement.cpp:
2983         (WebCore::cummulatedCharacterRangeLength): Simplify some code.
2984         (WebCore::SVGTextContentElement::getSubStringLength):
2985
2986 2008-03-04  Anders Carlsson  <andersca@apple.com>
2987
2988         Mac build fix. Neither me, Sam nor Adam know why we need to do this though :(
2989
2990         * bindings/js/kjs_proxy.cpp:
2991         (WebCore::KJSProxy::attachDebugger):
2992         * page/Page.cpp:
2993         (WebCore::Page::setDebuggerForAllPages):
2994         (WebCore::Page::setDebugger):
2995
2996 2008-03-04  Adam Roben  <aroben@apple.com>
2997
2998         Add ExecState.h to ForwardingHeaders
2999
3000         Reviewed by Anders.
3001
3002         * ForwardingHeaders/kjs/ExecState.h: Added.
3003         * page/Page.cpp: Touch this to force WebCore to build and the headers
3004         to be copied.
3005
3006 2008-03-04  Adam Roben  <aroben@apple.com>
3007
3008         Make it possible to set a KJS::Debugger on all Frames in a Page and
3009         all Pages in the process
3010
3011         Reviewed by Kevin M.
3012
3013         * ForwardingHeaders/kjs/debugger.h: Added.
3014         * bindings/js/kjs_proxy.cpp:
3015         (WebCore::KJSProxy::initScript): Attach the Page's debugger if there
3016         is one.
3017         (WebCore::KJSProxy::attachDebugger): Attach the passed-in debugger, or
3018         detach any existing debugger if none was passed in.
3019         * bindings/js/kjs_proxy.h:
3020         * page/Page.cpp:
3021         (WebCore::Page::Page): Initialize new member.
3022         (WebCore::Page::setDebuggerForAllPages): Call setDebugger on each Page
3023         in the process.
3024         (WebCore::Page::setDebugger): Store the debugger and pass it off to
3025         all our Frames.
3026         * page/Page.h:
3027
3028 2008-03-04  Sam Weinig  <sam@webkit.org>
3029
3030         Reviewed by Darin Adler.
3031
3032         Add ClassInfo to custom constructors so that they toString properly
3033
3034         - Take this chance to remove the "Imp" from the end of JSXMLHttpRequestConstructorImp,
3035           and XSLTProcessorConstructorImp and prefix all the classes with JS. 
3036
3037         * bindings/js/JSAudioConstructor.cpp:
3038         (WebCore::): Added ClassInfo definition.
3039         (WebCore::JSAudioConstructor::JSAudioConstructor):
3040         (WebCore::JSAudioConstructor::construct): Cleanup.
3041         * bindings/js/JSAudioConstructor.h: Rename m_doc to m_document.
3042         (WebCore::JSAudioConstructor::classInfo): Added.
3043
3044         * bindings/js/JSHTMLInputElementBase.cpp: Rename HTMLInputElementBasePrototype 
3045         to JSHTMLInputElementBasePrototype as seen if toString'ed.
3046         (WebCore::):
3047
3048         * bindings/js/JSHTMLOptionElementConstructor.cpp:
3049         (WebCore::): Added ClassInfo definition.
3050         * bindings/js/JSHTMLOptionElementConstructor.h:
3051         (WebCore::JSHTMLOptionElementConstructor::classInfo): Added.
3052
3053         * bindings/js/JSImageConstructor.cpp:
3054         (WebCore::): Added ClassInfo definition.
3055         (WebCore::JSImageConstructor::implementsConstruct): Moved here from header.
3056         * bindings/js/JSImageConstructor.h:
3057         (WebCore::JSImageConstructor::classInfo): Added.
3058
3059         * bindings/js/JSXMLHttpRequest.cpp:
3060         (WebCore::): Rename XMLHttpRequestPrototype  to JSXMLHttpRequestPrototype 
3061         as seen if toString'ed.
3062         (WebCore::JSXMLHttpRequestConstructor::JSXMLHttpRequestConstructor):
3063         (WebCore::JSXMLHttpRequestConstructor::implementsConstruct):
3064         (WebCore::JSXMLHttpRequestConstructor::construct):
3065         * bindings/js/JSXMLHttpRequest.h: Renamed JSXMLHttpRequestConstructorImp to
3066         JSXMLHttpRequestConstructor and doc to m_document and 
3067         (WebCore::JSXMLHttpRequestConstructor::classInfo): Added.
3068
3069         * bindings/js/JSXSLTProcessor.cpp:
3070         (WebCore::): Renamed XSLTProcessorPrototype to JSXSLTProcessorPrototype and 
3071         XSLTProcessorConstructorImp to JSXSLTProcessorConstructor.
3072         (WebCore::JSXSLTProcessorConstructor::JSXSLTProcessorConstructor):
3073         (WebCore::JSXSLTProcessorConstructor::implementsConstruct):
3074         (WebCore::JSXSLTProcessorConstructor::construct):
3075         * bindings/js/JSXSLTProcessor.h:
3076         (WebCore::JSXSLTProcessorConstructor::classInfo): Added.
3077
3078         * bindings/js/kjs_window.cpp:
3079         (WebCore::JSDOMWindowBase::getValueProperty): Fixed to work with the new class names.
3080
3081 2008-03-04  Dan Bernstein  <mitz@apple.com>
3082
3083         Reviewed by Oliver Hunt and Geoffrey Garen.
3084
3085         - fix http://bugs.webkit.org/show_bug.cgi?id=17667
3086           <rdar://problem/5779658> REGRESSION (r30587): Document::implicitClose() not called when done loading page (Image does not get scaled to fit)
3087
3088         * loader/loader.cpp:
3089         (WebCore::Loader::didFinishLoading): Changed to call
3090         setLoadInProgress(false) even for 4xx errors, because that triggers
3091         load completion check.
3092
3093 2008-03-04  Adele Peterson  <adele@apple.com>
3094
3095         Reviewed by Beth.
3096
3097         Fix for <rdar://problem/5779718> focus() does not work for anchor elements with no content
3098
3099         If an anchor has zero size, don't exclude it from being focusable from JS, just exclude it
3100         from being keyboard focusable (using the tab key).
3101
3102         * html/HTMLAnchorElement.cpp:
3103         (WebCore::HTMLAnchorElement::isFocusable):
3104         (WebCore::HTMLAnchorElement::isKeyboardFocusable):
3105
3106 2008-03-04  Chris Fleizach  <cfleizach@apple.com>
3107
3108         Reviewed by Darin Adler.
3109
3110         - fix <rdar://problem/5119360> ER - Seed: Google results do not have AXHeading information
3111
3112         * page/mac/WebCoreAXObject.mm:
3113         (headingLevel):
3114         (-[WebCoreAXObject accessibilityIsIgnored]):
3115
3116 2008-03-04  Sam Weinig  <sam@webkit.org>
3117
3118         GTK+ build fix.
3119
3120         * GNUmakefile.am:
3121
3122 2008-03-04  Sam Weinig  <sam@webkit.org>
3123
3124         Reviewed by Darin Adler.
3125
3126         Remame ImageConstructorImp to JSImageConstructor and move it into its
3127         own file.
3128
3129         * GNUmakefile.am:
3130         * WebCore.pro:
3131         * WebCore.vcproj/WebCore.vcproj:
3132         * WebCore.xcodeproj/project.pbxproj:
3133         * WebCoreSources.bkl:
3134         * bindings/js/JSImageConstructor.cpp: Copied from bindings/js/kjs_html.cpp.
3135         (WebCore::JSImageConstructor::JSImageConstructor):
3136         (WebCore::JSImageConstructor::construct):
3137         * bindings/js/JSImageConstructor.h: Copied from bindings/js/kjs_html.h.
3138         * bindings/js/kjs_html.cpp:
3139         (WebCore::getRuntimeObject): Make this function static since it is only used
3140         in this file.
3141         * bindings/js/kjs_html.h:
3142         * bindings/js/kjs_window.cpp:
3143         (WebCore::JSDOMWindowBase::getValueProperty):
3144
3145 2008-03-04  Adam Roben  <aroben@apple.com>
3146
3147         Fix an uninitialized value warning in CodeGeneratorJS.pm
3148
3149         * bindings/scripts/CodeGeneratorJS.pm: Remove reference to
3150         non-existent $maybeOkParam (this was removed in r30753).
3151
3152 2008-03-04  Sam Weinig  <sam@webkit.org>
3153
3154         Reviewed by Darin Adler.
3155
3156         Remove kjs_dom.{h,cpp}.
3157
3158         - Removed custom toAttr, which took a boolean ok, and teach CodeGeneratorJS.pm
3159           to us a null return value as an indication of failure. (This new logic is used
3160           for toVoidCallback as well.)
3161         - Move getRuntimeObject to kjs_html where a bunch of other runtime object related
3162           functions currently live.
3163         - Move checkNodeSecurity to kjs_binding, where other frame security functions 
3164           currently live.
3165         - Remove getNodeConstructor.  It had no implementation.
3166
3167         * GNUmakefile.am:
3168         * WebCore.pro:
3169         * WebCore.vcproj/WebCore.vcproj:
3170         * WebCore.xcodeproj/project.pbxproj:
3171         * WebCoreSources.bkl:
3172         * bindings/js/JSAttrCustom.cpp:
3173         * bindings/js/JSCustomVoidCallback.cpp:
3174         (WebCore::toVoidCallback):
3175         * bindings/js/JSCustomVoidCallback.h:
3176         * bindings/js/JSDatabaseCustom.cpp:
3177         (WebCore::JSDatabase::changeVersion):
3178         (WebCore::JSDatabase::transaction):
3179         * bindings/js/JSElementCustom.cpp:
3180         (WebCore::JSElement::setAttributeNode):
3181         (WebCore::JSElement::setAttributeNodeNS):
3182         * bindings/js/JSEventTargetBase.cpp:
3183         (WebCore::toJS):
3184         * bindings/js/JSEventTargetBase.h:
3185         * bindings/js/JSHTMLAppletElementCustom.cpp:
3186         * bindings/js/JSHTMLElementCustom.cpp:
3187         * bindings/js/JSHTMLEmbedElementCustom.cpp:
3188         * bindings/js/JSHTMLFormElementCustom.cpp:
3189         * bindings/js/JSHTMLFrameElementCustom.cpp:
3190         * bindings/js/JSHTMLIFrameElementCustom.cpp:
3191         * bindings/js/JSHTMLObjectElementCustom.cpp:
3192         * bindings/js/JSNamedNodeMapCustom.cpp:
3193         * bindings/js/JSNamedNodesCollection.cpp:
3194         * bindings/js/JSNodeFilterCustom.cpp:
3195         * bindings/js/JSXSLTProcessor.cpp:
3196         * bindings/js/kjs_binding.cpp:
3197         (WebCore::checkNodeSecurity):
3198         * bindings/js/kjs_binding.h:
3199         * bindings/js/kjs_css.cpp:
3200         * bindings/js/kjs_dom.cpp: Removed.
3201         * bindings/js/kjs_dom.h: Removed.
3202         * bindings/js/kjs_events.cpp:
3203         * bindings/js/kjs_html.cpp:
3204         (WebCore::getRuntimeObject):
3205         * bindings/js/kjs_html.h:
3206         * bindings/js/kjs_window.cpp:
3207         * bindings/scripts/CodeGeneratorJS.pm:
3208         * dom/Attr.idl:
3209         * html/HTMLPlugInElement.cpp:
3210         * page/InspectorController.cpp:
3211
3212 2008-03-04  Adam Roben  <aroben@apple.com>
3213
3214         Win/Qt/GTK+/wx build fix after r30740
3215
3216         * editing/Editor.cpp: Added missing #include.
3217         * page/qt/FrameQt.cpp: Removed Frame::dashboardRegionsChanged.
3218         * page/win/FrameWin.cpp: Ditto.
3219         * platform/wx/TemporaryLinkStubs.cpp: Ditto.
3220
3221 2008-03-04  Alp Toker  <alp@atoker.com>
3222
3223         GTK+ build fix for breakage introduced in r30740.
3224
3225         Remove Frame::dashboardRegionsChanged(). There's now a default
3226         implementation at ChromeClient::dashboardRegionsChanged().
3227
3228         * page/gtk/FrameGtk.cpp:
3229
3230 2008-03-04  Alp Toker  <alp@atoker.com>
3231
3232         GTK+ build fix suggested by aroben. Remove an unused Mac-specific
3233         included introduced in r30740.
3234
3235         * page/ChromeClient.h:
3236
3237 2008-03-04  Dan Bernstein  <mitz@apple.com>
3238
3239         Reviewed by Sam Weinig.
3240
3241         - fix <rdar://problem/5622336> Burmese text does not render on http://www.myanmarbible.com/bible/Judson/html/index.html
3242
3243         Test: platform/win/fast/text/uniscribe-missing-glyph.html
3244
3245         Note that default installations of Windows do not have Myanmar fonts.
3246         What this patch does is ensure that the Myanmar and other complex
3247         scripts are rendered as missing glyphs rather than not rendered at all.
3248         The particular page in the bug measures the relative widths of two
3249         rendered strings and, if they are rendered as missing glyphs, detects
3250         that a Myanmar fonts is not available and substitutes the text with
3251         images. By not rendering (and measuring) missing glyphs, WebKit was
3252         throwing the page's detection code off.
3253
3254         * platform/graphics/win/UniscribeController.cpp:
3255         (WebCore::UniscribeController::shape): Removed an early return in case
3256         shaping resulted in missing glyphs. This is now expected if font
3257         fallback failed to produce a font containing glyphs for the character.
3258         Also changed two resize()s to shrink()s.
3259
3260 2008-03-04  Darin Adler  <darin@apple.com>
3261
3262         Reviewed by Adam.
3263
3264         - remove WebCoreFrameBridge reapplyStyles method
3265
3266         * WebCore.base.exp: Added exports.
3267         * page/mac/WebCoreFrameBridge.h: Removed WebCoreDeviceType and
3268         reapplyStylesForDeviceType: method.
3269         * page/mac/WebCoreFrameBridge.mm: Ditto.
3270
3271 2008-03-04  Darin Adler  <darin@apple.com>
3272
3273         Reviewed by Adam.
3274
3275         - eliminate WebCoreFrameBridge createFrameViewWithNSView
3276
3277         * WebCore.base.exp: Added some more exports.
3278         * page/mac/WebCoreFrameBridge.h: Deleted createFrameViewWithNSView.
3279         * page/mac/WebCoreFrameBridge.mm: Ditto.
3280
3281 2008-03-04  Darin Adler  <darin@apple.com>
3282
3283         Reviewed by Adam.
3284
3285         - removed WebCoreFrameBridge scrollOverflowInDirection
3286
3287         * WebCore.base.exp: Export function needed by WebKit.
3288         * page/mac/WebCoreFrameBridge.h: Removed WebScrollDirection, WebScrollGranularity,
3289         and scrollOverflowInDirection.
3290         * page/mac/WebCoreFrameBridge.mm: Removed method.
3291
3292 2008-03-04  Darin Adler  <darin@apple.com>
3293
3294         Reviewed by Adam.
3295
3296         - remove WebCoreFrameBridge installInFrame: method
3297
3298         * WebCore.base.exp: Export a few symbols.
3299         * WebCore.xcodeproj/project.pbxproj: Export a few files.
3300         * page/mac/WebCoreFrameBridge.h: Remove installInFrame:.
3301         * page/mac/WebCoreFrameBridge.mm: Ditto.
3302
3303 2008-03-04  Darin Adler  <darin@apple.com>
3304
3305         Reviewed by Adam.
3306
3307         - remove WebCoreFrameBridge window method
3308
3309         * page/mac/EventHandlerMac.mm:
3310         (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): Get the window by calling
3311         window on the NSView instead of using the bridge. The WebKit side wasn't doing anything
3312         special, so a call to -[NSView window] is fine.
3313
3314         * page/mac/WebCoreFrameBridge.h: Removed the window method.
3315
3316 2008-03-04  Darin Adler  <darin@apple.com>
3317
3318         Reviewed by Adam.
3319
3320         - remove -[WebCoreFrameBridge dashboardRegionsChanged:]
3321
3322         * WebCore.base.exp: Updated.
3323         * page/Chrome.cpp:
3324         (WebCore::ChromeClient::dashboardRegionsChanged): Added.
3325         * page/ChromeClient.h: Added virtual function for dashboardRegionsChanged.
3326         * page/Frame.h: Removed dashboardRegionsChanged function.
3327         * page/FrameView.cpp:
3328         (WebCore::FrameView::updateDashboardRegions): Changed to call dashboardRegionsChanged
3329         on ChromeClient and to only call it when the regions actually changed.
3330         * page/mac/FrameMac.mm: Removed dashboardRegionsChanged function.
3331         * page/mac/WebCoreFrameBridge.h: Removed dashboardRegionsChanged: method.
3332
3333 2008-03-04  Darin Adler  <darin@apple.com>
3334
3335         Reviewed by Adam.
3336
3337         - remove WebCoreFrameBridge issuePasteComand method
3338
3339         * editing/Editor.cpp:
3340         (WebCore::Editor::paste): Moved the Mac-specific part of this to EditorMac.
3341         * editing/mac/EditorMac.mm:
3342         (WebCore::Editor::paste): Added. Calls paste: on the document view (normally a
3343         WebHTMLView). We should get rid of this eventually.
3344         * page/Frame.h: Removed issuePasteCommand.
3345         * page/mac/FrameMac.mm: Ditto.
3346         * page/mac/WebCoreFrameBridge.h: Ditto.
3347
3348 2008-03-04  Alexey Proskuryakov  <ap@webkit.org>
3349
3350         Suggested by Darin, rubber-stamped by Mark.
3351
3352         http://bugs.webkit.org/show_bug.cgi?id=17569
3353         REGRESSION (r30571): Buzzword.com doesn't load
3354
3355         Rolling out r30571, as determining what is wrong with it proved tricky.
3356
3357         * loader/FrameLoader.cpp:
3358         (WebCore::FrameLoader::load):
3359         (WebCore::FrameLoader::tokenizerProcessedData):
3360         (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy):
3361
3362 2008-03-04  Sam Weinig  <sam@webkit.org>
3363
3364         Build fix.
3365
3366         * bindings/js/kjs_events.cpp:
3367
3368 2008-03-03  Sam Weinig  <sam@webkit.org>
3369
3370         Reviewed by Mark Rowe.
3371
3372         Move JSClipboard into its own file.
3373
3374         * DerivedSources.make:
3375         * GNUmakefile.am:
3376         * WebCore.pro:
3377         * WebCore.vcproj/WebCore.vcproj:
3378         * WebCore.xcodeproj/project.pbxproj:
3379         * WebCoreSources.bkl:
3380         * bindings/js/JSAttrCustom.cpp:
3381         * bindings/js/JSClipboardCustom.cpp: Added.
3382         (WebCore::JSClipboard::types):
3383         (WebCore::JSClipboard::clearData):
3384         (WebCore::JSClipboard::getData):
3385         (WebCore::JSClipboard::setData):
3386         (WebCore::JSClipboard::setDragImage):
3387         * bindings/js/JSElementCustom.cpp:
3388         * bindings/js/JSEventCustom.cpp:
3389         * bindings/js/JSHTMLFrameElementCustom.cpp:
3390         * bindings/js/JSHTMLIFrameElementCustom.cpp:
3391         * bindings/js/kjs_events.cpp:
3392         * bindings/js/kjs_events.h:
3393         * bindings/js/kjs_window.cpp:
3394         * bindings/scripts/CodeGeneratorJS.pm:
3395         * dom/Clipboard.cpp:
3396         (WebCore::Clipboard::setDropEffect):
3397         (WebCore::Clipboard::setEffectAllowed):
3398         * dom/Clipboard.idl: Added.
3399
3400 2008-03-03  Sam Weinig  <sam@webkit.org>
3401
3402         Windows build-fix.
3403
3404         * page/Chrome.cpp:
3405         * plugins/win/PluginViewWin.cpp:
3406
3407 2008-03-03  Sam Weinig  <sam@webkit.org>
3408
3409         Reviewed by Darin Adler.
3410
3411         Cleanup and plumbing in preparation for the great Window split.
3412
3413         - Rename KJS::Window to WebCore::JSDOMWindowBase.
3414         - Remove KJS::Window::retrieve() and KJS::Window::retrieveWindow() and replace
3415           with the new toJSDOMWindow().
3416         - Remove KJS::Window::retrieveActive() and replace with explicit call to 
3417           exec->dynamicGlobalObject() and toJSDOMWindow().
3418
3419         * bindings/js/JSCustomVoidCallback.cpp:
3420         (WebCore::toVoidCallback):.
3421         * bindings/js/JSCustomXPathNSResolver.cpp:
3422         (WebCore::JSCustomXPathNSResolver::create):
3423         * bindings/js/JSDatabaseCustom.cpp:
3424         (WebCore::JSDatabase::changeVersion):
3425         (WebCore::JSDatabase::transaction):
3426         * bindings/js/JSDocumentCustom.cpp:
3427         (WebCore::JSDocument::location):
3428         (WebCore::toJS):
3429         * bindings/js/JSEventTargetBase.cpp:
3430         (WebCore::jsEventTargetAddEventListener):
3431         (WebCore::jsEventTargetRemoveEventListener):
3432         * bindings/js/JSEventTargetNode.cpp:
3433         (WebCore::JSEventTargetNode::setListener):
3434         * bindings/js/JSHTMLDocumentCustom.cpp:
3435         (WebCore::JSHTMLDocument::nameGetter):
3436         (WebCore::JSHTMLDocument::open):
3437         * bindings/js/JSHTMLFrameSetElementCustom.cpp:
3438         (WebCore::JSHTMLFrameSetElement::nameGetter):
3439         * bindings/js/JSLocation.cpp:
3440         (WebCore::JSLocation::put):
3441         (WebCore::jsLocationProtoFuncReplace):
3442         (WebCore::jsLocationProtoFuncReload):
3443         (WebCore::jsLocationProtoFuncAssign):
3444         * bindings/js/JSLocation.h:
3445         * bindings/js/JSSQLTransactionCustom.cpp:
3446         (WebCore::JSSQLTransaction::executeSql):
3447         * bindings/js/JSSVGLazyEventListener.cpp:
3448         (WebCore::JSSVGLazyEventListener::JSSVGLazyEventListener):
3449         (WebCore::JSSVGLazyEventListener::eventParameterName):
3450         * bindings/js/JSSVGLazyEventListener.h:
3451         * bindings/js/JSXMLHttpRequest.cpp:
3452         (WebCore::JSXMLHttpRequest::putValueProperty):
3453         (WebCore::jsXMLHttpRequestPrototypeFunctionOpen):
3454         (WebCore::jsXMLHttpRequestPrototypeFunctionAddEventListener):
3455         (WebCore::jsXMLHttpRequestPrototypeFunctionRemoveEventListener):
3456         * bindings/js/ScheduledAction.cpp:
3457         (WebCore::ScheduledAction::execute):
3458         * bindings/js/ScheduledAction.h:
3459         * bindings/js/kjs_binding.cpp:
3460         (WebCore::allowsAccessFromFrame):
3461         (WebCore::printErrorMessageForFrame):
3462         * bindings/js/kjs_events.cpp:
3463         (WebCore::JSAbstractEventListener::handleEvent):
3464         (WebCore::JSUnprotectedEventListener::JSUnprotectedEventListener):
3465         (WebCore::JSUnprotectedEventListener::~JSUnprotectedEventListener):
3466         (WebCore::JSUnprotectedEventListener::windowObj):
3467         (WebCore::JSEventListener::JSEventListener):
3468         (WebCore::JSEventListener::~JSEventListener):
3469         (WebCore::JSEventListener::windowObj):
3470         (WebCore::JSLazyEventListener::JSLazyEventListener):
3471         (WebCore::JSLazyEventListener::parseCode):
3472         * bindings/js/kjs_events.h:
3473         * bindings/js/kjs_navigator.cpp:
3474         (WebCore::MimeType::getValueProperty):
3475         * bindings/js/kjs_proxy.cpp:
3476         (WebCore::KJSProxy::evaluate):
3477         (WebCore::KJSProxy::createHTMLEventHandler):
3478         (WebCore::KJSProxy::createSVGEventHandler):
3479         * bindings/js/kjs_window.cpp:
3480         (WebCore::JSDOMWindowBasePrivate::JSDOMWindowBasePrivate):
3481         (WebCore::DOMWindowTimer::DOMWindowTimer):
3482         (WebCore::DOMWindowTimer::action):
3483         (WebCore::DOMWindowTimer::takeAction):
3484         (WebCore::):
3485         (WebCore::JSDOMWindowBase::JSDOMWindowBase):
3486         (WebCore::JSDOMWindowBase::~JSDOMWindowBase):
3487         (WebCore::JSDOMWindowBase::location):
3488         (WebCore::JSDOMWindowBase::mark):
3489         (WebCore::allowPopUp):
3490         (WebCore::createWindow):
3491         (WebCore::showModalDialog):
3492         (WebCore::JSDOMWindowBase::getValueProperty):
3493         (WebCore::JSDOMWindowBase::childFrameGetter):
3494         (WebCore::JSDOMWindowBase::indexGetter):
3495         (WebCore::JSDOMWindowBase::namedItemGetter):
3496         (WebCore::JSDOMWindowBase::getOwnPropertySlot):
3497         (WebCore::JSDOMWindowBase::put):
3498         (WebCore::JSDOMWindowBase::allowsAccessFrom):
3499         (WebCore::JSDOMWindowBase::allowsAccessFromNoErrorMessage):
3500         (WebCore::JSDOMWindowBase::allowsAccessFromPrivate):
3501         (WebCore::JSDOMWindowBase::crossDomainAccessErrorMessage):
3502         (WebCore::JSDOMWindowBase::printErrorMessage):
3503         (WebCore::JSDOMWindowBase::globalExec):
3504         (WebCore::JSDOMWindowBase::shouldInterruptScript):
3505         (WebCore::JSDOMWindowBase::setListener):
3506         (WebCore::JSDOMWindowBase::getListener):
3507         (WebCore::JSDOMWindowBase::findJSEventListener):
3508         (WebCore::JSDOMWindowBase::findOrCreateJSEventListener):
3509         (WebCore::JSDOMWindowBase::findJSUnprotectedEventListener):
3510         (WebCore::JSDOMWindowBase::findOrCreateJSUnprotectedEventListener):
3511         (WebCore::JSDOMWindowBase::clearHelperObjectProperties):
3512         (WebCore::JSDOMWindowBase::clear):
3513         (WebCore::JSDOMWindowBase::setCurrentEvent):
3514         (WebCore::JSDOMWindowBase::currentEvent):
3515         (WebCore::windowProtoFuncAToB):
3516         (WebCore::windowProtoFuncBToA):
3517         (WebCore::windowProtoFuncOpen):
3518         (WebCore::windowProtoFuncSetTimeout):
3519         (WebCore::windowProtoFuncClearTimeout):
3520         (WebCore::windowProtoFuncSetInterval):
3521         (WebCore::windowProtoFuncAddEventListener):
3522         (WebCore::windowProtoFuncRemoveEventListener):
3523         (WebCore::windowProtoFuncShowModalDialog):
3524         (WebCore::windowProtoFuncNotImplemented):
3525         (WebCore::JSDOMWindowBase::setReturnValueSlot):
3526         (WebCore::JSDOMWindowBase::clearAllTimeouts):
3527         (WebCore::JSDOMWindowBase::installTimeout):
3528         (WebCore::JSDOMWindowBase::pauseTimeouts):
3529         (WebCore::JSDOMWindowBase::resumeTimeouts):
3530         (WebCore::JSDOMWindowBase::clearTimeout):
3531         (WebCore::JSDOMWindowBase::timerFired):
3532         (WebCore::JSDOMWindowBase::disconnectFrame):
3533         (WebCore::JSDOMWindowBase::jsEventListeners):
3534         (WebCore::JSDOMWindowBase::jsHTMLEventListeners):
3535         (WebCore::JSDOMWindowBase::jsUnprotectedEventListeners):
3536         (WebCore::JSDOMWindowBase::jsUnprotectedHTMLEventListeners):
3537         (WebCore::toJS):
3538         (WebCore::toJSDOMWindow):
3539         (WebCore::toJSDOMWindow):
3540         * bindings/js/kjs_window.h:
3541         (WebCore::JSDOMWindowBase::impl):
3542         (WebCore::JSDOMWindowBase::classInfo):
3543         (WebCore::JSDOMWindowBase::):
3544         * bindings/objc/DOMUtility.mm:
3545         (KJS::createDOMWrapper):
3546         * bindings/scripts/CodeGeneratorJS.pm:
3547         * history/CachedPage.cpp:
3548         (WebCore::CachedPage::CachedPage):
3549         (WebCore::CachedPage::restore):