- 04 Dec, 2007 1 commit
-
-
aroben@apple.com authored
WebCore: Make the implementation of Frame::setNeedsReapplyStyles cross-platform Reviewed by Hyatt. No change in functionality. * page/Frame.cpp: (WebCore::Frame::setNeedsReapplyStyles): Added. Invalidates the FrameView so that FrameView::layout will be called, which ends up calling reapplyStyles. (WebCore::Frame::needsReapplyStyles): Added. (WebCore::Frame::reapplyStyles): Renamed from reparseConfiguration. (WebCore::FramePrivate::FramePrivate): * page/Frame.h: * page/FramePrivate.h: Added new boolean member. * page/FrameView.cpp: (WebCore::FrameView::layout): Call Frame::reapplyStyles if needed. (WebCore::FrameView::needsLayout): Say that we need layout if the Frame needs styles reapplied. * page/mac/WebCoreFrameBridge.h: Removed setNeedsReapplyStyles. * page/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge reapplyStylesForDeviceType:]): Updated for rename. * bridge/win/FrameWin.cpp: Removed Frame::setNeedsReapplyStyles. * page/gtk/FrameGtk.cpp: Ditto. * page/mac/FrameMac.mm: Ditto. * page/qt/FrameQt.cpp: Ditto. * platform/wx/TemporaryLinkStubs.cpp: Ditto. WebKit/mac: Remove -[WebFrameBridge setNeedsReapplyStyles] This functionality is now WebCore's responsibility. Reviewed by Hyatt. * WebCoreSupport/WebFrameBridge.mm: * WebKit.order: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@28411 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 Nov, 2007 1 commit
-
-
darin@apple.com authored
Reviewed by Steve. - cut down on notImplemented() functions on Windows * bridge/AXObjectCache.h: Put #if around the accessibility global. * bridge/win/FrameWin.cpp: (WebCore::Frame::setNeedsReapplyStyles): Moved here from TemporaryLinkStubs. * dom/Document.cpp: (WebCore::Document::lastModified): Re-implemented using the ResourceResponse that's now available from the DocumentLoader. * editing/JSEditor.cpp: (execTranspose): Changed to call transpose() on the Editor instead of the obsolete one on the Frame. * loader/DocumentLoader.h: Removed getResponseModifiedHeader. * loader/FrameLoader.h: Removed overrideMediaType. * loader/gtk/DocumentLoaderGtk.cpp: Removed. * loader/mac/DocumentLoaderMac.mm: Removed. * loader/qt/DocumentLoaderQt.cpp: Removed. * page/Frame.cpp: Removed transpose. * page/Frame.h: Ditto. * page/FrameView.h: Removed updateBorder. * page/gtk/FrameGtk.cpp: Removed issueTransposeCommand. * page/mac/FrameMac.mm: Ditto. * page/mac/WebCoreFrameBridge.h: Removed issueTransposeCommand and overrideMediaType. * page/qt/FrameQt.cpp: Removed issueTransposeCommand. * platform/gtk/TemporaryLinkStubs.cpp: Removed gAccessibilityEnabled. * platform/qt/TemporaryLinkStubs.cpp: Ditto. * platform/win/TemporaryLinkStubs.cpp: Removed or moved all but 3 of the stubs. * platform/wx/TemporaryLinkStubs.cpp: Removed gAccessibilityEnabled, issueTransposeCommand, and overrideMediaType. * platform/network/cf/ResourceHandleCFNet.cpp: (WebCore::ResourceHandle::loadsBlocked): Moved here from TemporaryLinkStubs. (WebCore::ResourceHandle::willLoadFromCache): Ditto. * platform/win/GraphicsContextWin.cpp: (WebCore::GraphicsContextPlatformPrivate::clip): Ditto. * platform/win/ScrollViewWin.cpp: (WebCore::ScrollView::inWindow): Ditto. * platform/win/SystemTimeWin.cpp: (WebCore::userIdleTime): Ditto. * platform/win/WidgetWin.cpp: (WebCore::Widget::setIsSelected): Ditto. * WebCore.pro: Updated for removed files. * WebCore.xcodeproj/project.pbxproj: Updated for removed file. WebKit/mac: Reviewed by Steve. - removed some unused WebCore bridge methods * WebCoreSupport/WebFrameBridge.mm: Removed issueTransposeCommand and overrideMediaType. * WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::overrideMediaType): Changed to call WebView directly instead of using the bridge object. WebKit/win: Reviewed by Steve. * Interfaces/IWebUIDelegate.idl: Added the functions needed below. * WebChromeClient.cpp: (WebChromeClient::setMenubarVisible): Eliminated the notImplemented() here by calling through the UI delegate. (WebChromeClient::menubarVisible): Ditto. (WebChromeClient::runDatabaseSizeLimitPrompt): Ditto. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@27598 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 03 Nov, 2007 1 commit
-
-
darin@apple.com authored
Reviewed by Maciej. - http://bugs.webkit.org/show_bug.cgi?id=15821 remove unused PCRE features for speed A first step toward removing the PCRE features we don't use. This gives a 0.8% speedup on SunSpider, and a 6.5% speedup on the SunSpider regular expression test. Replaced the public interface with one that doesn't use the name PCRE. Removed code we don't need for JavaScript and various configurations we don't use. This is in preparation for still more changes in the future. We'll probably switch to C++ and make some even more significant changes to the regexp engine to get some additional speed. There's probably additional unused stuff that I haven't deleted yet. This does mean that our PCRE is now a fork, but I think that's not really a big deal. * JavaScriptCore.exp: Remove the 5 old entry points and add the 3 new entry points for WebCore's direct use of the regular expression engine. * kjs/config.h: Remove the USE(PCRE16) define. I decided to flip its sense and now there's a USE(POSIX_REGEX) instead, which should probably not be set by anyone. Maybe later we'll just get rid of it altogether. * kjs/regexp.h: * kjs/regexp.cpp: (KJS::RegExp::RegExp): Switch to new jsRegExp function names and defines. Cut down on the number of functions used. (KJS::RegExp::~RegExp): Ditto. (KJS::RegExp::match): Ditto. * pcre/dftables.c: (main): Get rid of ctype_letter and ctype_meta, which are unused. * pcre/pcre-config.h: Get rid of EBCIDIC, PCRE_DATA_SCOPE, const, size_t, HAVE_STRERROR, HAVE_MEMMOVE, HAVE_BCOPY, NEWLINE, POSIX_MALLOC_THRESHOLD, NO_RECURSE, SUPPORT_UCP, SUPPORT_UTF8, and JAVASCRIPT. These are all no longer configurable in our copy of the library. * pcre/pcre.h: Remove the macro-based kjs prefix hack, the PCRE version macros, PCRE_UTF16, the code to set up PCRE_DATA_SCOPE, the include of <stdlib.h>, and most of the constants and functions defined in this header. Changed the naming scheme to use a JSRegExp prefix rather than a pcre prefix. In the future, we'll probably change this to be a C++ header. * pcre/pcre_compile.c: Removed all unused code branches, including many whole functions and various byte codes. Kept changes outside of removal to a minimum. (check_escape): (first_significant_code): (find_fixedlength): (find_recurse): (could_be_empty_branch): (compile_branch): (compile_regex): (is_anchored): (is_startline): (find_firstassertedchar): (jsRegExpCompile): Renamed from pcre_compile2 and changed the parameters around a bit. (jsRegExpFree): Added. * pcre/pcre_exec.c: Removed many unused opcodes and variables. Also started tearing down the NO_RECURSE mechanism since it's now the default. In some cases there were things in the explicit frame that could be turned into plain old local variables and other small like optimizations. (pchars): (match_ref): (match): Changed parameters quite a bit since it's now not used recursively. (jsRegExpExecute): Renamed from pcre_exec. * pcre/pcre_internal.h: Get rid of PCRE_DEFINITION, PCRE_SPTR, PCRE_IMS, PCRE_ICHANGED, PCRE_NOPARTIAL, PCRE_STUDY_MAPPED, PUBLIC_OPTIONS, PUBLIC_EXEC_OPTIONS, PUBLIC_DFA_EXEC_OPTIONS, PUBLIC_STUDY_OPTIONS, MAGIC_NUMBER, 16 of the opcodes, _pcre_utt, _pcre_utt_size, _pcre_try_flipped, _pcre_ucp_findprop, and _pcre_valid_utf8. Also moved pcre_malloc and pcre_free here. * pcre/pcre_maketables.c: Changed to only compile in dftables. Also got rid of many of the tables that we don't use. * pcre/pcre_tables.c: Removed the unused Unicode property tables. * pcre/pcre_ucp_searchfuncs.c: Removed everything except for _pcre_ucp_othercase. * pcre/pcre_xclass.c: (_pcre_xclass): Removed uneeded support for classes based on Unicode properties. * wtf/FastMallocPCRE.cpp: Removed unused bits. It would be good to eliminate this completely, but we need the regular expression code to be C++ first. * pcre/pcre_fullinfo.c: * pcre/pcre_get.c: * pcre/ucp.h: Files that are no longer needed. I didn't remove them with this check-in, because I didn't want to modify all the project files. WebCore: Reviewed by Maciej. - WebCore part of http://bugs.webkit.org/show_bug.cgi?id=15821 remove unused PCRE features for speed * page/Frame.cpp: (WebCore::Frame::matchLabelsAgainstElement): * page/mac/FrameMac.mm: (WebCore::Frame::matchLabelsAgainstElement): Remove use of "[[:digit:]]" syntax. This hasn't worked for some time. Use "\d" instead. * platform/RegularExpression.h: Remove the unused cap function. We can add it back later if we find we need it. * platform/RegularExpression.cpp: (WebCore::RegularExpression::Private::compile): Update for JavaScriptCore regular expression entry point changes. (WebCore::RegularExpression::Private::~Private): Ditto. (WebCore::RegularExpression::match): Remove the code to set PCRE_NOTBOL. This means that regular expressions with metacharactesr like ^ in them won't work any more with non-whole-string searches, but we don't use any regular expressions like that. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@27419 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 Sep, 2007 1 commit
-
-
thatcher authored
Reviewed by Darin. <rdar://problem/5491013> REGRESSION: -[WebView windowScriptObject] returns a dummy object or nil if a page hasn't loaded Calling -[WebView windowScriptObject] before the page loads would give you nil. This behavior didn't match Tiger. The API behavior in Tiger let you get the window script object once and keep ahold of it as long as you needed it. The window object would remain valid even after page loads. This change restores the Tiger behavior. <rdar://problem/5495790> NULL dereference crash beneath Bindings::RootObject::interpreter when saving Dashcode document The changes to WebScriptObject's _isSafeScript call also fixed the crash in Dashcode. * bindings/objc/WebScriptObject.mm: (-[WebScriptObject _setOriginRootObject:andRootObject:]): New method used to update the the root objects, so the WebScriptObject can still be used after a page load. (-[WebScriptObject _isSafeScript]): Call [self _rootObject] instead of accessing the data member directly. DOMNode has an override for the _rootObject method, and it can return 0 when _private->_rootObject is non-zero. We would return YES here when it wasn't safe and later crash with my modified layout tests. Checking _rootObject first prevents other calls sites from needing to check for a valid root object, this fixed the Dashcode crash. (-[WebScriptObject _imp]): Ditto. * bindings/objc/WebScriptObjectPrivate.h: Add _setOriginRootObject:andRootObject:. * loader/FrameLoader.cpp: (WebCore::FrameLoader::clear): Call the renamed clearScriptObjects function. (WebCore::FrameLoader::dispatchWindowObjectAvailable): Some gratuitous code cleanup. * page/Frame.cpp: (WebCore::Frame::clearScriptObjects): Renamed cleanupScriptObject to clearScriptObjects. Call clearPlatformScriptObjects last so m_bindingRootObject is already NULL. (WebCore::Frame::windowScriptNPObject): Hold a JSLock before accessing the window. This change is unrelated to the bug, but should be fixed. * page/mac/FrameMac.mm: (WebCore::Frame::windowScriptObject): Return a script object even if the interpreter is NULL. This resotres the Tiger behavior of always being able to access the window object. (WebCore::Frame::clearPlatformScriptObjects): Keep the window script object around, and update the root objects for the window script object. * page/Frame.h: Rename cleanupScriptObject to clearScriptObjects. * page/FramePrivate.h: Use a RetainPtr for m_windowScriptObject. WebKitTools: Reviewed by Darin. <rdar://problem/5491013> REGRESSION: -[WebView windowScriptObject] returns a dummy object or nil if a page hasn't loaded (breaks EA Sports Online) Assert that the -[WebScriptObject JSObject] return value is only NULL for non-window objects. This is tested by plugins/root-object-premature-delete-crash.html. * DumpRenderTree/mac/ObjCController.m: (-[ObjCController accessStoredWebScriptObject]): LayoutTests: Reviewed by Darin. <rdar://problem/5491013> REGRESSION: -[WebView windowScriptObject] returns a dummy object or nil if a page hasn't loaded (breaks EA Sports Online) Updated results to show the didClearWindowScriptObject delegate call. Tweaked plugins/root-object-premature-delete-crash.html to test a non-window script object half the time. This change works with a change to DumpRenderTree. * http/tests/loading/empty-subframe-expected.txt: * http/tests/loading/simple-subframe-expected.txt: * plugins/root-object-premature-delete-crash.html: * webarchive/loading/test-loading-archive-expected.txt: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25697 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 13 Sep, 2007 1 commit
-
-
darin authored
Reviewed by Oliver. - fix <rdar://problem/5470457> REGRESSION: Input method inline hole is mishandled in text <input> elements with maxlength limit * editing/Editor.h: Moved MarkedTextUnderline here and renamed it CompositionUnderline. Moved the rest of the marked text API here and used the term that will be more familiar to those on platforms other than Macintosh, "composition". This helps prevent confusion with the other kinds of mark -- the emacs "mark" and spelling/grammar marks. Also cleaned up the conditionals a bit for the Macintosh-specific parts of this header. * editing/Editor.cpp: (WebCore::Editor::Editor): Updated for name change. (WebCore::Editor::clear): Added. To be called by FrameLoader::clear(). (WebCore::Editor::insertTextWithoutSendingTextEvent): Removed code to make inserted text replace the marked text range -- we now deal with this explicitly by not calling this function to replace marked text. Also removed unneeded code that was specific to the use of this to replace the marked text. (WebCore::Editor::selectComposition): Renamed from selectMarkedText. Updated since the composition range is not stored as a Range. (WebCore::Editor::confirmComposition): Added. To be called when changing a composition into actual text. Unlike the old code path, deletes the composition first, then inserts the text, triggering the normal insertion code path and events. This is helpful because it means the inserted text will be truncated by the <input> element, for example. (WebCore::Editor::confirmCompositionWithoutDisturbingSelection): Added. (WebCore::Editor::setComposition): Added. To be called when changing the composition. Takes parameters for the underlines and selection. Unlike the old code path, this passes a flag down that indicates the inserted text is part of a composition. This is helpful because we don't send the event that will cause the <input> element to do truncation. It's also a better API for future improvements to our input method handling. (WebCore::Editor::revealSelectionAfterEditingOperation): Updated for name change. (WebCore::Editor::setIgnoreCompositionSelectionChange): Ditto. (WebCore::Editor::compositionRange): Added. Needed now that the composition is not stored as a Range. (WebCore::Editor::getCompositionSelection): Added. * editing/TypingCommand.h: * editing/TypingCommand.cpp: (WebCore::TypingCommand::insertText): Added an insertedTextIsComposition parameter, and don't send the BeforeTextInsertedEvent if it's true. * loader/FrameLoader.cpp: (WebCore::FrameLoader::clear): Replaced the Macintosh-specific call to setMarkedTextRange with a call to the new Editor::clear(). * page/Frame.h: * page/Frame.cpp: * page/FramePrivate.h: * page/mac/FrameMac.mm: Removed the marked text code. It was streamlined and moved to Editor, except for the Mac-specific code, which was moved into WebKit. * page/mac/WebCoreFrameBridge.h: * page/mac/WebCoreFrameBridge.mm: Removed some now-unneeded marked text code. (-[WebCoreFrameBridge markedTextNSRange]): Updated for name/API change. * rendering/InlineTextBox.h: * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint): Updated marked text code for name changes, and also streamlined the code a bit for the case where there is no composition. (WebCore::InlineTextBox::paintCompositionBackground): Name change. (WebCore::InlineTextBox::paintCompositionUnderline): Ditto. * rendering/RenderTextControl.h: * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::finishText): Added. Helper function shared by the (WebCore::RenderTextControl::text): (WebCore::getNextSoftBreak): (WebCore::RenderTextControl::textWithHardLineBreaks): * platform/CharacterNames.h: Added newlineCharacter. * dom/Range.h: Remove the now-unneeded version of toString that converts <br> elements into newlines. * dom/Range.cpp: (WebCore::Range::toString): Changed this to use a Vector<UChar> instead of a String so it will not have pathological reallocation performance, and removed the <br> feature. (WebCore::Range::pastEndNode): Made this return 0 when there is no start node. This bit of extra robustness guarantees you can't do a null dereference if the start node is 0 and the end node is not. Not sure this case really exists. * page/ContextMenuController.cpp: (ContextMenuController::contextMenuItemSelected): Removed a semi-bogus use of Range::toString(true). The right function to use here is plainText(). * bridge/EditorClient.h: Removed obsolete markedTextAbandoned function. * WebCore.exp: Updated for above changes. WebKit: Reviewed by Oliver. - fix <rdar://problem/5470457> REGRESSION: Input method inline hole is mishandled in text <input> elements with maxlength limit * WebView/WebHTMLView.mm: (-[WebHTMLView _selectionChanged]): Tweaked code a bit. (-[WebHTMLView markedRange]): Simplified logic, since markedTextNSRange works when there's no composition range. (-[WebHTMLView hasMarkedText]): Call directly to Editor instead of bridge. (-[WebHTMLView unmarkText]): Call new confirmComposition to make it clear that this is confirming text, not just unmarking it to discard it. (extractUnderlines): Added. Converts directly from an NSAttributedString to the CompositionUnderline vector that's used by WebCore. (-[WebHTMLView setMarkedText:selectedRange:]): Changed to use the new setComposition. (-[WebHTMLView insertText:]): Changed to use confirmComposition when appropriate, instead of relying on special behavior of Editor::insertText. (-[WebHTMLView _updateSelectionForInputManager]): Rewrote to use getCompositionSelection and confirmCompositionWithoutDisturbingSelection. * WebCoreSupport/WebEditorClient.h: * WebCoreSupport/WebEditorClient.mm: Removed obsolete markedTextAbandoned function. win: Reviewed by Oliver. - fix <rdar://problem/5470457> REGRESSION: Input method inline hole is mishandled in text <input> elements with maxlength limit * WebView.cpp: (WebView::resetIME): Change to use confirmCompositionWithoutDisturbingSelection. (WebView::updateSelectionForIME): Update for name changes, and to use new functions in Editor. (WebView::onIMEStartComposition): Removed unneeded call to unmarkText. (compositionToUnderlines): Removed startOffset parameter, since setComposition now handles this. (WebView::onIMEComposition): Changed to use confirmComposition and setComposition. Logic gets a lot cleaner. (WebView::onIMEEndComposition): Removed unneeded calls to Editor. (WebView::onIMERequestCharPosition): Updated for name changes. LayoutTests: Reviewed by Oliver. - updated test results changed by change in input manager logic * platform/mac/editing/input/firstrectforcharacterrange-styled-expected.txt: * platform/mac/editing/input/text-input-controller-expected.txt: * platform/mac/editing/input/wrapped-line-char-rect-expected.txt: Updated. Small changes in which delegate methods are called. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25547 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 06 Sep, 2007 1 commit
-
-
mjs authored
- fixed <rdar://problem/5455457> REGRESSION (9A527-9A535): Colloquy crash on launch in WebCoreScriptDebugger initWithDelegate (with announce.js plug-in installed) * page/mac/FrameMac.mm: (WebCore::Frame::windowScriptObject): Ensure that -[WebView windowScriptObject] and -[WebFrame windowObject] return null until the windowScriptObjectAvailable: delegate method is sent. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25383 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 Aug, 2007 1 commit
-
-
sullivan authored
Reviewed by Adam Roben WebCore part of fix for: <rdar://problem/5417777> WebKit focus ring color no longer matches system focus rings Adele wrote the first version of this patch. No test cases added because I made sure the layout tests are unaffected. Two additional bug fixes were made in passing, but neither of them had any effect on any known real-world case, and both were too difficult to write test cases for to be worthwhile. * WebCore.exp: added symbols for these new functions so WebKit can call them * WebCore.xcodeproj/project.pbxproj: updated for new file * platform/graphics/mac/ColorMac.h: Added. New file to hold the increasing amount of Mac-specific color stuff. * platform/graphics/Color.h: removed #if PLATFORM(MAC) code, which is now in ColorMac.h * platform/graphics/mac/ColorMac.mm: (WebCore::makeRGBAFromNSColor): new static function to convert an NSColor object to an RGBA32 struct (WebCore::colorFromNSColor): new public function to convert an NSColor object to a WebCore-style Color object (WebCore::focusRingColor): Uses (cached) systemFocusRingColor instead of hardwired values, unless usesTestModeFocusRingColor is true, in which case it uses the old hardwired color (WebCore::usesTestModeFocusRingColor): returns value of global var (WebCore::setUsesTestModeFocusRingColor): sets value of global var (+[WebCoreControlTintObserver controlTintDidChange]): Uses [NSColor keyboardFocusIndicatorColor] to set systemFocusRingColor; don't compile if COLORMATCH_EVERYTHING is set since we don't know what it would take to satisfy this state. * bindings/objc/DOMRGBColor.mm: now includes ColorMac.h to account for moved declarations * bridge/mac/WebCoreAXObject.mm: ditto * page/mac/FrameMac.mm: (WebCore::convertAttributesToUnderlines): now uses new colorFromNSColor. The old code was swapping G & B, but it didn't matter in practice because this function is only used to convert the color of an input manager's marked text underline, which is always black * page/mac/WebCoreFrameBridge.mm: (-[WebCoreFrameBridge setBaseBackgroundColor:]): now uses new colorFromNSColor. The old code was swapping G & B, but it didn't matter in practice because this function is only called with a grayscale color perhaps containing an alpha value * rendering/RenderView.cpp: (WebCore::RenderView::paintBoxDecorations): just updated a comment WebKit: Reviewed by Adam Roben WebKit part of fix for: <rdar://problem/5417777> WebKit focus ring color no longer matches system focus rings * Misc/WebNSAttributedStringExtras.mm: now includes <WebCore/ColorMac.h> to account for moved declaration * WebView/WebFrame.mm: ditto * WebView/WebViewPrivate.h: * WebView/WebView.mm: (+[WebView _setUsesTestModeFocusRingColor:]): new SPI, calls through to new WebCore function. This is used by DumpRenderTree to make sure the focus ring color is always the same when performing layout tests, regardless of OS X version. (+[WebView _usesTestModeFocusRingColor]): new SPI, calls through to new WebCore function WebKitTools: Reviewed by Adam Roben * DumpRenderTree/DumpRenderTree.m: (runTest): call new +[WebView _setUsesTestModeFocusRingColor:YES] so we get the same focus ring colors in layout tests on Tiger and Leopard git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25169 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 10 Aug, 2007 1 commit
-
-
thatcher authored
Reviewed by Adam. <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit Disable the NPAPI for 64-bit on Mac OS X. * Configurations/JavaScriptCore.xcconfig: Use the 64-bit export file. * JavaScriptCore.xcodeproj/project.pbxproj: Create a 64-bit export file that filters out the NPN fnctions. * bindings/NP_jsobject.cpp: #ifdef out this for 64-bit on Mac OS X * bindings/NP_jsobject.h: Ditto. * bindings/c/c_class.cpp: Ditto. * bindings/c/c_class.h: Ditto. * bindings/c/c_instance.cpp: Ditto. * bindings/c/c_instance.h: Ditto. * bindings/c/c_runtime.cpp: Ditto. * bindings/c/c_runtime.h: Ditto. * bindings/c/c_utility.cpp: Ditto. * bindings/c/c_utility.h: Ditto. * bindings/npapi.h: Ditto. * bindings/npruntime.cpp: Ditto. * bindings/npruntime.h: Ditto. * bindings/npruntime_impl.h: Ditto. * bindings/npruntime_priv.h: Ditto. * bindings/runtime.cpp: (KJS::Bindings::Instance::createBindingForLanguageInstance): don't creat an NPObject on Mac OS X in 64-bit. WebCore: Reviewed by Adam. <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit Disable NPObject use in 64-bit on Mac OS X. * Configurations/WebCore.xcconfig: Add a framework search path to the sub-framworks of Carbon. * WebCore.xcodeproj/project.pbxproj: Filter out the Frame::windowScriptNPObject() symbol in 64-bit. * bindings/objc/DOM.mm: (-[DOMElement _NPObject]): Return null in 64-bit. * config.h: Set WTF_USE_NPOBJECT to 0 in 64-bit Mac OS X. * page/Frame.cpp: (WebCore::Frame::cleanupScriptObjects): Add more #if USE(NPOBJECT) blocks where needed. * page/Frame.h: Ditto. * page/mac/FrameMac.mm: (WebCore::Frame::createScriptInstanceForWidget): Ditto. * page/mac/WebCoreFrameBridge.h: Ditto. * page/mac/WebCoreFrameBridge.mm: Ditto. WebKit: Reviewed by Adam. <rdar://problem/5394449> Stop using some Carbon UI APIs for 64 bit Disable NPObject use in 64-bit on Mac OS X. Also generate the 64-bit export file. * Configurations/WebKit.xcconfig: Point to the generated 64-bit export file. * Plugins/WebBasePluginPackage.h: * Plugins/npfunctions.h: #ifdef out this header in 64-bit on Mac OS X. * WebKit.LP64.exp: Removed. * WebKit.xcodeproj/project.pbxproj: Generate the the 64-bit export file. * WebKitPrefix.h: Define WTF_USE_NPOBJECT. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@25000 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 18 Jul, 2007 1 commit
-
-
weinig authored
Rename csshelper.h, csshelper.cpp, cssparser.h, cssparser.cpp, cssstyleselector.h, and cssstyleselector.cpp to be CamelCase. * WebCore.pro: * WebCore.vcproj/WebCore.vcproj: * bindings/objc/DOM.mm: * bindings/objc/DOMHTML.mm: * css/CSSGrammar.y: * css/CSSMediaRule.cpp: * css/CSSMutableStyleDeclaration.cpp: * css/CSSPrimitiveValue.cpp: * css/CSSStyleSheet.cpp: * css/MediaList.cpp: * css/MediaQueryExp.cpp: * css/csshelper.cpp: Removed. * css/csshelper.h: Removed. * css/CSSHelper.cpp: Copied from css/csshelper.cpp. * css/CSSHelper.h: Copied from css/csshelper.h. * css/cssparser.cpp: Removed. * css/cssparser.h: Removed. * css/CSSParser.cpp: Copied from css/cssparser.cpp. * css/CSSParser.h: Copied from css/cssparser.h. * css/cssstyleselector.cpp: Removed. * css/cssstyleselector.h: Removed. * css/CSSStyleSelector.cpp: Copied from css/cssstyleselector.cpp. * css/CSSStyleSelector.h: Copied from css/cssstyleselector.h. * dom/Document.cpp: * dom/Element.cpp: * dom/StyledElement.cpp: * editing/ApplyStyleCommand.cpp: * editing/markup.cpp: * html/CanvasGradient.cpp: * html/CanvasRenderingContext2D.cpp: * html/CanvasStyle.cpp: * html/HTMLAnchorElement.cpp: * html/HTMLBaseElement.cpp: * html/HTMLBodyElement.cpp: * html/HTMLDocument.cpp: * html/HTMLEmbedElement.cpp: * html/HTMLFormElement.cpp: * html/HTMLFrameElementBase.cpp: * html/HTMLImageElement.cpp: * html/HTMLImageLoader.cpp: * html/HTMLLinkElement.cpp: * html/HTMLObjectElement.cpp: * html/HTMLOptGroupElement.cpp: * html/HTMLOptionElement.cpp: * html/HTMLSelectElement.cpp: * html/HTMLTableElement.cpp: * html/HTMLTablePartElement.cpp: * html/HTMLTokenizer.cpp: * ksvg2/css/SVGCSSParser.cpp: * ksvg2/css/SVGCSSStyleSelector.cpp: * ksvg2/svg/SVGAElement.cpp: * ksvg2/svg/SVGClipPathElement.cpp: * ksvg2/svg/SVGGradientElement.cpp: * ksvg2/svg/SVGLength.cpp: * ksvg2/svg/SVGMaskElement.cpp: * ksvg2/svg/SVGStyledElement.cpp: * ksvg2/svg/SVGUseElement.cpp: * page/DOMWindow.cpp: * page/mac/FrameMac.mm: * page/mac/WebCoreFrameBridge.mm: * rendering/HitTestResult.cpp: * rendering/RenderObject.cpp: * rendering/RenderStyle.cpp: * rendering/RenderThemeMac.mm: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24415 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 16 Jul, 2007 1 commit
-
-
aroben authored
WebCore: Replace Frame::print with Chrome::print This also adds a Frame* parameter to Chrome::print and ChromeClient::print so that it knows which Frame to print. Reviewed by Darin. All tests pass. * bindings/js/kjs_window.cpp: (KJS::WindowFunc::callAsFunction): Call Chrome::print. * editing/JSEditor.cpp: Ditto. * bridge/win/FrameWin.cpp: Removed Frame::print. * page/Frame.h: Ditto. * page/mac/FrameMac.mm: Ditto. * page/qt/FrameQt.cpp: Ditto. * platform/gdk/FrameGdk.cpp: Ditto. * page/mac/WebCoreFrameBridge.h: Removed -print. * page/Chrome.cpp: Added Frame* parameter to Chrome::print and pass it up to the ChromeClient. * page/Chrome.h: Ditto. * page/ChromeClient.h: Ditto. * platform/gdk/TemporaryLinkStubs.cpp: Ditto. * platform/graphics/svg/SVGImageEmptyClients.h: Ditto. WebKit: Move printing from WebFrameBridge to WebChromeClient Reviewed by Darin. * WebCoreSupport/WebChromeClient.h: Updated for ChromeClient changes. * WebCoreSupport/WebChromeClient.mm: (WebChromeClient::print): Moved code from WebFrameBridge. * WebCoreSupport/WebFrameBridge.mm: Removed -print. WebKit/win: Updated WebChromeClient for ChromeClient changes. Reviewed by Darin. * WebChromeClient.cpp: (WebChromeClient::print): Added a Frame* parameter. * WebChromeClient.h: Ditto. WebKitQt: Updated ChromeClientQt for ChromeClient changes. Reviewed by Darin. * WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::print): Added a Frame* parameter. * WebCoreSupport/ChromeClientQt.h: Ditto. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24330 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 06 Jul, 2007 1 commit
-
-
oliver authored
Reviewed by Maciej. Pulled a number of methods from WebKit and WebCoreFrameBridge into C++ objects. * WebCore.exp: * WebCore.xcodeproj/project.pbxproj: * editing/Editor.cpp: (WebCore::Editor::replaceMarkedText): From -[WebCoreFrameBridge replaceMarkedTextWithText:] * editing/Editor.h: * page/Frame.cpp: (WebCore::Frame::setMarkedTextRange): Pulled platform independent logic from Mac specific implementation (WebCore::Frame::selectRangeInMarkedText): Converted from -[WebHTMLView _selectRangeInMarkedText:] * page/Frame.h: * page/mac/FrameMac.mm: (WebCore::Frame::setMarkedTextRange): Now only does Mac specific logic when manipulating initial NSAttributedString * page/mac/WebCoreFrameBridge.h: * page/mac/WebCoreFrameBridge.mm: Removed -[WebCoreFrameBridge replaceMarkedTextWithText:] WebKit: Reviewed by Maciej. <rdar://problem/5318756> Need to refactor IM/Marked text code to share logic with windows. Moved a number of methods from WebHTMLView into WebCore. Replaced bridge methods with calls directly into WebCore objects. * WebKit.xcodeproj/project.pbxproj: * WebView/WebHTMLView.mm: (-[WebHTMLView setMarkedText:selectedRange:]): Now calls WebCore object methods directly, rather than calling via the bridge. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24085 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 05 Jul, 2007 1 commit
-
-
sullivan authored
Reviewed by Adam - WebCore part of fix for <rdar://problem/5315033> * rendering/RenderObject.h: replaced PaintRestrictionSelectionOnlyWhiteText with PaintRestrictionSelectionOnlyBlackText (WebCore::RenderObject::PaintInfo::PaintInfo): replaced forceWhiteText with forceBlackText * rendering/RenderObject.cpp: (WebCore::RenderObject::addLineBoxRects): added a useSelectionHeight parameter, which defaults to false; this method is unimplemented at this level so this has no effect. * rendering/RenderText.h: * rendering/RenderText.cpp: (WebCore::RenderText::addLineBoxRects): added a useSelectionHeight parameter, which defaults to false. If true, use the vertical position and height returned by selectionRect rather than replacing it with the more tight-fitting position and height of the line box. * dom/Range.h: * dom/Range.cpp: (WebCore::Range::addLineBoxRects): added a useSelectionHeight parameter, which defaults to false. Passes this along to RenderObject. * page/Frame.h: renamed parameter to selectionImage * page/Frame.cpp: (WebCore::Frame::selectionTextRects): pass true for addLineBoxRects new useSelectionHeight parameter, so the rects returned by this new method will match the height that the selection would be painted here (WebCore::Frame::paint): updated for white->black name changes * page/mac/FrameMac.mm: (WebCore::Frame::selectionImage): updated for white->black name changes * rendering/InlineFlowBox.cpp: (WebCore::InlineFlowBox::paintTextDecorations): updated for white->black name changes * rendering/RenderLayer.cpp: (WebCore::RenderLayer::paintLayer): updated for white->black name changes * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint): updated for white->black name changes, and actually use black instead of white. This was the goal of all the name changes. WebKit: Reviewed by Adam - WebKit part of fix for <rdar://problem/5315033> * WebView/WebDocumentPrivate.h: new selectionImageForcingBlackText: method. selectionImageForcingWhiteText: is no longer used and was never in an official release of WebKit, so it could be removed, except that doing so would cause trouble for people using nightly WebKit with Safari 3.0 beta. So I left it in, but made it just force black text instead of white text, which will look different for those nightly WebKit/Safari 3.0 beta people but not break anything. * Misc/WebSearchableTextView.m: (-[WebSearchableTextView selectionImageForcingBlackText:]): new unimplemented protocol method for this obsolete class * WebView/WebHTMLView.mm: (-[WebHTMLView selectionImageForcingBlackText:]): calls through to WebCore the way selectionImageForcingWhiteText: used to (-[WebHTMLView selectionImageForcingWhiteText:]): now just calls selectionImageForcingBlackText:, thus not working as you would expect from the name * WebView/WebPDFView.mm: (-[WebPDFView selectionImageForcingBlackText:]): guts of old selectionImageForcingWhiteText:, but with black substituted for white (-[WebPDFView selectionImageForcingWhiteText:]): now just calls selectionImageForcingBlackText:, thus not working as you would expect from the name git-svn-id: http://svn.webkit.org/repository/webkit/trunk@24041 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 04 Jul, 2007 2 commits
-
-
aliceli1 authored
Fixed <rdar://problem/5225119> support smart pasting on Windows * WebCore.vcproj/WebCore.vcproj: * WebCore.xcodeproj/project.pbxproj: Added new files * editing/SmartReplace.cpp: Added. (WebCore::isCharacterSmartReplaceExempt): Added non-CF implementation placeholder * editing/SmartReplace.h: Added. * editing/SmartReplaceCF.cpp: Added. (WebCore::getSmartSet): (WebCore::isCharacterSmartReplaceExempt): Added new implementation * bridge/win/FrameWin.cpp: * page/Frame.h: * page/mac/FrameMac.mm: Removed old declaration and implementation * editing/ReplaceSelectionCommand.cpp: (WebCore::ReplaceSelectionCommand::doApply): Changed to call the new function instead of old * page/mac/WebCoreFrameBridge.h: * page/mac/WebCoreFrameBridge.mm: Removed old declaration and implementation (-[WebCoreFrameBridge smartInsertForString:replacingRange:beforeString:afterString:]): Changed to call the new function instead of old * platform/win/PasteboardWin.cpp: (WebCore::Pasteboard::Pasteboard): Register new clipboard format (WebCore::Pasteboard::writeSelection): Set data for smartpaste format on clipboard (WebCore::Pasteboard::canSmartReplace): Added non-stub implementation git-svn-id: http://svn.webkit.org/repository/webkit/trunk@23986 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
rdar://problem/5311640thatcher authored
Reenable some code for 64-bit now that <rdar://problem/5311640> and <rdar://problem/5311690> are resolved. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@23985 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 03 Jul, 2007 1 commit
-
-
thatcher authored
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@23975 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 01 Jun, 2007 1 commit
-
-
ggaren authored
Fixed <rdar://problem/5238177> Continuing after hitting breakpoint doesn't execute the next step. No test because the only code affected is the debugger, and none of the relevant API is exported. Reverted an accidental change in 21324 that caused originRootObject for the window object always to be 0. We could probably just remove the debugger's dependency on originRootObject, but I wanted to be safe. * page/mac/FrameMac.mm: (WebCore::Frame::windowScriptObject): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21933 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 25 May, 2007 1 commit
-
-
ggaren authored
Fixed a bug with Settings where a number of different objects held bare Settings* data members, even though the Page owns the Settings object and deletes it upon destruction. Added NULL checks since the Page can be deleted before the frame/document. * page/Settings.cpp: Removed reliance on setNeedsReapplyStylesForSettingsChange. * css/cssstyleselector.cpp: CSSStyleSelector was the worst offender. It held a number of back pointers that were not guaranteed. I removed the Settings*, Frame*, and FrameView* back pointers, but others could probably go, too. I replaced them with a single Document* pointer, which is guaranteed because the Document owns the CSSStyleSelector. * page/Page.cpp: Removed setNeedsReapplyStylesForSettingsChange -- the Settings object is now a proper subcontroller of Page, so it doesn't need to use a global table to find its page anymore. Also, this function confusingly implied that the Frames in a page can have heterogeneous settings, which is not true. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21749 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 12 May, 2007 1 commit
-
-
eseidel authored
Reviewed by mjs. Crash starting Safari with JavaScript disabled. http://bugs.webkit.org/show_bug.cgi?id=13691 Test: none possible. * page/mac/FrameMac.mm: (WebCore::Frame::cleanupPlatformScriptObjects): NULL check d->m_script git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21427 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 11 May, 2007 1 commit
-
-
mjs authored
- fixed <rdar://problem/5197621> closing second window crashed webkit (13660) http://bugs.webkit.org/show_bug.cgi?id=13660 No test case; not testable. * page/mac/FrameMac.mm: (WebCore::Frame::cleanupPlatformScriptObjects): Check if the interpreter is null; if so, we don't want to do work that may lazily create it while the Frame is being destroyed. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21419 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 10 May, 2007 2 commits
-
-
adele authored
Reviewed by Hyatt. Test for <rdar://problem/4100616> Doing a "find" in RSS doesn't scroll to result * fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.checksum: Added. * fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.png: Added. * fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt: Added. * fast/overflow/scroll-nested-positioned-layer-in-overflow.html: Added. WebCore: Reviewed by Hyatt. WebCore part of fix for <rdar://problem/4100616> Doing a "find" in RSS doesn't scroll to result Test: fast/overflow/scroll-nested-positioned-layer-in-overflow.html Merged visibleSelectionRect into selectionRect. selectionRect() now takes an argument to determine whether or not to return a rect that clips to the visible content. This change makes all of the implementations of selectionRect consistent by having them all consider the repaint rect when clipping to visible content. * page/Frame.cpp: (WebCore::Frame::revealSelection): Call selectionRect with clipToVisibleContent = false, so we can get a rect that's not visible to reveal. (WebCore::Frame::selectionRect): Added clipToVisibleContent argument, and merged visibleSelectionRect into this method. (WebCore::Frame::setIsActive): Use selectionRect instead of visibleSelectionRect. * page/Frame.h: * page/mac/FrameMac.mm: (WebCore::Frame::selectionImage): Update layout before creating the image. Use selectionRect instead of visibleSelectionRect. * page/DragController.cpp: (WebCore::dragLocForSelectionDrag): Use selectionRect instead of visibleSelectionRect. * rendering/RenderBR.h: (WebCore::RenderBR::selectionRect): Updated argument. * rendering/RenderBlock.h: (WebCore::RenderBlock::selectionRect): ditto. * rendering/RenderSVGInlineText.cpp: (WebCore::RenderSVGInlineText::selectionRect): ditto. * rendering/RenderSVGInlineText.h: ditto. * rendering/RenderObject.h: (WebCore::RenderObject::selectionRect): ditto. (WebCore::RenderObject::SelectionInfo::SelectionInfo): ditto. * rendering/RenderView.cpp: (WebCore::RenderView::selectionRect): ditto. (WebCore::RenderView::setSelection): ditto. * rendering/RenderView.h: * rendering/RenderText.h: * rendering/RenderText.cpp: (WebCore::RenderText::selectionRect): Only call computeAbsoluteRepaintRect when clipping to visible content. Otherwise, just adjust the rect to the correct position. * rendering/RenderListMarker.h: * rendering/RenderListMarker.cpp: (WebCore::RenderListMarker::selectionRect): To match what we do in RenderText, if we're trying to clip to visible content, just call computeAbsoluteRepaintRect. * rendering/RenderReplaced.h: * rendering/RenderReplaced.cpp: (WebCore::RenderReplaced::selectionRect): ditto. * rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollRectToVisible): Check for a parent layer at the beginning, so we can try to scroll all of our parent layers first, before trying to scroll the top level view. Also, don't try to scroll overflow layers that have -webkit-line-clamp restricting the height. This will prevent us from revealing text hidden by the slider in Safari RSS. * WebCore.exp: Update symbols for WebKit. WebKit: Reviewed by Hyatt. WebKit part of fix for <rdar://problem/4100616> Doing a "find" in RSS doesn't scroll to result Updated to use selectionRect instead of visibleSelectionRect. selectionRect() now returns the visible rect by default. * WebView/WebHTMLView.mm: (-[WebHTMLView _lookUpInDictionaryFromMenu:]): (-[WebHTMLView selectionImageRect]): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21387 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
ggaren authored
Reviewed by Maciej Stachowiak. Tests for more fix-ups to the WebScriptObject/WebScripting APIs, related to <rdar://problem/5140447> API for fetching JSGlobalContextRef from WebView or WebFrame * fast/dom/wrapper-classes-expected.txt: * fast/dom/wrapper-classes.html: Added cases to test the wrapper classes for different data types sent across the JS/ObjC bridge. * fast/dom/wrapper-round-tripping-expected.txt: Added. * fast/dom/wrapper-round-tripping.html: Added. New test to verify that you can round-trip between a JSObjectRef and a WebScriptObject. WebCore: Reviewed by Maciej Stachowiak. More fix-ups to the WebScriptObject/WebScripting APIs, related to <rdar://problem/5140447> API for fetching JSGlobalContextRef from WebView or WebFrame * bindings/objc/WebScriptObject.h: Fully specified the surprising rules for type conversion between JavaScript and ObjC. * bindings/objc/WebScriptObject.mm: Added up-call accessor to WebFrame. This is kind of stinky, but I'm OK with it because eventually all of this code should move up into WebKit. (+[WebScriptObject scriptObjectForJSObject:frame:]): (-[WebScriptObject valueForKey:]): (-[WebScriptObject JSObject]): - Added _rootObject check because if _rootObject returns NULL it means that _imp is no longer GC protected, so it's not safe to use. - Added _isSafeScript check because that's what WebScriptObject methods typically do, even though the value of doing so isn't clear to me. * bindings/objc/WebScriptObjectPendingPublic.h: Added WebFrame* parameter to -scriptObjectForJSObject:. This is required to wrap JS objects that are not already in the wrapper cache. It would be nice to remove this limitation of WebScriptObject some day. * page/mac/FrameMac.mm: (WebCore::Frame::cleanupPlatformScriptObjects): Force removal of m_windowScriptObject from the cache, to avoid retrieving the m_windowScriptObject from the previous page on a new page load. (It would be non-functional in that case.) WebKitTools: Reviewed by Maciej Stachowiak. Added support for testing ObjC/JS type bridging. Added ASSERT that -JSObject returns nil when the underlying JSObject is no longer GC protected. * DumpRenderTree/DumpRenderTree.m: (returnThisCallback): (returnThisClass): (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]): (+[LayoutTestController isSelectorExcludedFromWebScript:]): (+[LayoutTestController webScriptNameForSelector:]): (-[LayoutTestController accessStoredWebScriptObject]): (-[LayoutTestController testWrapperRoundTripping]): (-[LayoutTestController objCClassNameOf:]): (-[LayoutTestController objCObjectOfClass:]): * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21354 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 May, 2007 1 commit
-
-
ggaren authored
Reviewed by Darin Adler. Added test to verify that you get back the same JS/ObjC wrapper when you access the same object twice. * fast/dom/wrapper-identity-expected.txt: Added. * fast/dom/wrapper-identity.html: Added. WebCore: Reviewed by Darin Adler. More fix-ups to the WebScriptObject/WebScripting APIs, related to <rdar://problem/5140447> API for fetching JSGlobalContextRef from WebView or WebFrame 1. Added -scriptObjectForJSObject: SPI so you can bridge back from JavaScriptCore to WebScriptObject. 2. Fixed WebScriptObject bridging so that you always get the same WebScriptObject for a JSObject (like in the DOM). This makes -scriptObjectForJSObject: a lot more coherent as an API. * bindings/objc/DOMInternal.mm: Renamed wrapperCache to DOMWrapperCache to distinguish from the JSWrapperCache. Added typedef for readability. (WebCore::getDOMWrapper): (WebCore::addDOMWrapper): (WebCore::removeDOMWrapper): * bindings/objc/WebScriptObject.mm: Added JSWrapperCache, which works just like the DOMWrapperCache. (WebCore::getJSWrapper): (WebCore::addJSWrapper): (WebCore::removeJSWrapper): (WebCore::createJSWrapper): (+[WebScriptObject scriptObjectForJSObject:]): This is the new API. It attempts to return a specific DOM wrapper object, or, barring that, it returns a generic WebScriptObject. (+[WebScriptObject scriptObjectForJSObject:originRootObject:rootObject:]): Added this method to support our old WebScriptObject security and leak checking model, even though it doesn't work very well. (-[WebScriptObject _setImp:originRootObject:rootObject:]): (-[WebScriptObject dealloc]): (-[WebScriptObject finalize]): (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]): * bindings/objc/WebScriptObjectPendingPublic.h: * bindings/objc/WebScriptObjectPrivate.h: * page/mac/FrameMac.mm: (WebCore::Frame::windowScriptObject): Changed to use the new API. This fixes a bug where the object sent to -windowScriptObjectAvailable: and returned from -windowScriptObject could not be round-tripped. WebKitTools: Reviewed by Darin Adler. Added support for testing ObjC object identity. Added ASSERT to verify that you can round-trip the object passed to you in -didClearWindowObject:forFrame:. * DumpRenderTree/DumpRenderTree.m: (-[WaitUntilDoneDelegate webView:didClearWindowObject:forFrame:]): (+[LayoutTestController isSelectorExcludedFromWebScript:]): (+[LayoutTestController webScriptNameForSelector:]): (-[LayoutTestController accessStoredWebScriptObject]): (-[LayoutTestController objCIdentityIsEqual::]): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21324 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 03 May, 2007 2 commits
-
-
adele authored
* page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21233 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
adele authored
Fix for <rdar://problem/4727607> REGRESSION: KeyScript is deprecated, need a new solution for forcing Roman input for password fields on Leopard * page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry): Use TSMSetDocumentProperty and TSMRemoveDocumentProperty on Leopard disable and enable non-ascii input sources. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@21230 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 16 Apr, 2007 2 commits
-
-
darin authored
* page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry): Replace assertion with a runtime check. We can consider changing it back to an assertion some day, but it's not important. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20902 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
darin authored
Reviewed by John Sullivan. - fix http://bugs.webkit.org/show_bug.cgi?id=13303 <rdar://problem/5126341> REGRESSION: controls in a background Safari window maintain active appearance if the address bar has focus (13303) - fix a related problem where elements could look focused in non-active windows - simplify secure keyboard entry logic in Frame::setIsActive * WebCore.exp: Add two new symbols for use by WebKit. * html/HTMLInputElement.cpp: (WebCore::HTMLInputElement::dispatchFocusEvent): Call setUseSecureKeyboardEntryWhenActive rather than calling setSecureKeyboardEntry directly -- does nothing if the frame is not active. (WebCore::HTMLInputElement::dispatchBlurEvent): Ditto. * page/Frame.cpp: (WebCore::Frame::setUseSecureKeyboardEntryWhenActive): Added. Calls setUseSecureKeyboardEntry only if the frame is active, but also stores away the state, so that the setIsActive function doesn't have to recompute it. (WebCore::Frame::setIsActive): Rewrote all the comments in the function. Removed the code to manage control tints, which are not based on the whether the frame is active but rather on AppKit's concept of whether the window should have "key appearance". Simplified the logic about when to call setUseSecureKeyboardEntry by using the value of m_useSecureKeyboardEntryWhenActive. (WebCore::FramePrivate::FramePrivate): Initialize m_useSecureKeyboardEntryWhenActive. * page/Frame.h: Made setSecureKeyboardEntry private and renamed it to setUseSecureKeyboardEntry, removed isSecureKeyboardEntry, and added a public setUseSecureKeyboardEntryWhenActive. * page/FramePrivate.h: Added m_useSecureKeyboardEntryWhenActive. * page/mac/FrameMac.mm: (WebCore::Frame::setUseSecureKeyboardEntry): Added an assertion, and removed isSecureKeyboardEntry(). * page/FrameView.h: Added updateControlTints. * page/FrameView.cpp: (WebCore::FrameView::updateControlTints): Added. Code was moved here from setIsActive for two reasons: (1) it makes more sense in the view class, and (2) it needs to be called at the appropriate time for AppKit, not when active changes. * rendering/RenderTheme.cpp: (WebCore::RenderTheme::isFocused): Added an isActive check here to match the logic in the implementation of the CSS pseudo-state. * rendering/RenderThemeMac.mm: (WebCore::RenderThemeMac::updateFocusedState): Use the isFocused function instead of repeating the logic here. Removed the "need to add a key window test here" comment. (WebCore::RenderThemeMac::controlSupportsTints): Added a comment about the NSCell SPI that's related to the _windowChangedKeyState method we now use in WebHTMLView. WebKit: Reviewed by John Sullivan. - fix http://bugs.webkit.org/show_bug.cgi?id=13303 <rdar://problem/5126341> REGRESSION: controls in a background Safari window maintain active appearance if the address bar has focus (13303) * WebView/WebHTMLView.mm: (-[WebHTMLView _windowChangedKeyState]): Added. Calls FrameView::updateControlTints. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20901 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 22 Mar, 2007 1 commit
-
-
sullivan authored
Followup for recent fix to 5079700, found by assertion added to Safari. * page/mac/FrameMac.mm: (WebCore::Frame::searchForLabelsBeforeElement): Fixed another place in this method where an empty NSString was being returned instead of nil. Cleaned up the style a little too. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20404 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 21 Mar, 2007 1 commit
-
-
sullivan authored
- fixed <rdar://problem/5079700> REGRESSION (r19702): Name/password aren't autofilled or saved for .Mac homepage login * page/mac/FrameMac.mm: (WebCore::Frame::searchForLabelsBeforeElement): don't count empty strings as valid results git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 13 Mar, 2007 1 commit
-
-
darin authored
- fix <rdar://problem/4915303> CrashTracer: 36 crashes in Safari at com.apple.AppKit: -[NSView getRectsBeingDrawn:count:] + 502 * page/mac/FrameMac.mm: (WebCore::Frame::imageFromRect): This was calling drawRect: directly, but NSView's getRectsBeingDrawn:count: method was never really safe to call unless it was AppKit that called your drawRect: method. Changed it to call drawSingleRect: instead. A little ugly, but seems to work and will almost certainly fix the bug. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20152 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 11 Mar, 2007 1 commit
-
-
oliver authored
Reviewed by Adele. WebCore: Moving Frame{Mac}::respondToChangedSelection to Frame.cpp Added new EditorClient method to handle old bridge function * bridge/EditorClient.h: Added respondToChangedSelection to replace old bridge function * editing/Editor.cpp: (WebCore::Editor::respondToChangedSelection): Add client call to replace old bridge call from Frame::respondToChangedSelection * editing/SelectionController.cpp: (WebCore::SelectionController::setSelection): No longer directly call Editor as Frame::respondToChangedSelection makes the call * page/Frame.cpp: (WebCore::Frame::respondToChangedSelection): Moved from FrameMac, replaced bridge call with call to Editor * page/mac/FrameMac.mm: Moved respondToChangedSelection to Frame.cpp * page/mac/WebCoreFrameBridge.h: Removed respondToChangedSelection from bridge * page/qt/FrameQt.cpp: Remove stub method for respondToChangedSelection WebKit: Moved respondToChangedSelection from FrameBridge to EditorClient * WebCoreSupport/WebEditorClient.h: * WebCoreSupport/WebEditorClient.mm: (WebEditorClient::respondToChangedSelection): * WebCoreSupport/WebFrameBridge.mm: Removed respondToChangedSelection from bridge WebKitQt: Stub for EditorClientQt::respondToChangedSelection * WebCoreSupport/EditorClientQt.cpp: (WebCore::EditorClientQt::respondToChangedSelection): * WebCoreSupport/EditorClientQt.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20108 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 Mar, 2007 1 commit
-
-
thatcher authored
Reviewed by John. <rdar://problem/4664697> highlighter SPI needs a node parameter to give more context Pass the RenderObject's node to customHighlightLineRect and paintCustomHighlight. * page/Frame.h: * page/mac/FrameMac.mm: (WebCore::Frame::customHighlightLineRect): (WebCore::Frame::paintCustomHighlight): * page/mac/WebCoreFrameBridge.h: * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintCustomHighlight): * rendering/RenderBox.cpp: (WebCore::RenderBox::paintCustomHighlight): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::addHighlightOverflow): (WebCore::RootInlineBox::paintCustomHighlight): WebKit: Reviewed by John. <rdar://problem/4664697> highlighter SPI needs a node parameter to give more context Added new methods to the WebHTMLHighlighter protocol that include the DOMNode being painted. * WebCoreSupport/WebFrameBridge.mm: (-[WebFrameBridge customHighlightRect:forLine:representedNode:WebCore::]): (-[WebFrameBridge paintCustomHighlight:forBox:onLine:behindText:entireLine:representedNode:WebCore::]): * WebKit.xcodeproj/project.pbxproj: * WebView/WebHTMLViewPrivate.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@20067 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 19 Feb, 2007 1 commit
-
-
mjs authored
Reviewed by Maciej. Additional coding by Maciej, additional review by Oliver. Get rid of the FrameMac and FrameQt classes. Instead move all methods into Frame directly, and implement some platform specific methods in foo/FrameFoo.cpp. Some general cleanup in Frame: * Move some methods out of Frame, to the place where they belong. * Unify the different ways of creating the JavaScript wrappers for <object>, <embed> and <applet> * Some cleanup of the WebCoreFrameBridge * ForwardingHeaders/bindings/NP_jsobject.h: Added. * ForwardingHeaders/bindings/npruntime_impl.h: Added. * ForwardingHeaders/bindings/runtime_root.h: Added. * WebCore.exp: * WebCore.xcodeproj/project.pbxproj: * bindings/js/kjs_binding.cpp: (KJS::ScriptInterpreter::shouldInterruptScript): * bindings/objc/DOM.mm: (-[DOMNode KJS::Bindings::]): * bindings/objc/DOMInternal.mm: (-[WebScriptObject _initializeScriptDOMNodeImp]): * bridge/EditorClient.h: * bridge/mac/FrameViewMac.mm: (WebCore::FrameView::updateBorder): (WebCore::FrameView::updateDashboardRegions): * bridge/mac/WebCoreAXObject.mm: (-[WebCoreAXObject rendererForView:]): * dom/Position.cpp: (WebCore::Position::next): * editing/CommandByName.cpp: (WebCore::Frame::execCopy): (WebCore::Frame::execCut): (WebCore::Frame::execPaste): * editing/Editor.cpp: (WebCore::Editor::canEdit): (WebCore::Editor::pasteWithPasteboard): (WebCore::Editor::paste): (WebCore::Editor::pasteAsPlainText): * editing/Editor.h: * editing/JSEditor.cpp: * html/HTMLAppletElement.cpp: (WebCore::HTMLAppletElement::getInstance): * html/HTMLEmbedElement.cpp: (WebCore::HTMLEmbedElement::getInstance): * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::formData): * html/HTMLObjectElement.cpp: (WebCore::HTMLObjectElement::getInstance): * loader/FrameLoader.cpp: (WebCore::FrameLoader::clear): (WebCore::FrameLoader::detachFromParent): * loader/mac/ImageDocumentMac.mm: (WebCore::finishImageLoad): * loader/qt/DocumentLoaderQt.cpp: * page/Chrome.cpp: (WebCore::Chrome::shouldInterruptJavaScript): * page/Chrome.h: * page/ChromeClient.h: * page/Frame.cpp: (WebCore::Frame::~Frame): (WebCore::Frame::markedTextRange): (WebCore::Frame::shouldChangeSelection): (WebCore::Frame::shouldDeleteSelection): (WebCore::Frame::isContentEditable): (WebCore::Frame::setSecureKeyboardEntry): (WebCore::Frame::isSecureKeyboardEntry): (WebCore::Frame::bindingRootObject): (WebCore::Frame::createRootObject): (WebCore::Frame::windowScriptNPObject): (WebCore::Frame::cleanupScriptObjects): (WebCore::FramePrivate::FramePrivate): * page/Frame.h: * page/FramePrivate.h: * page/FrameView.h: * page/mac/EventHandlerMac.mm: (WebCore::EventHandler::tabsToLinks): (WebCore::EventHandler::tabsToAllControls): (WebCore::EventHandler::focusDocumentView): (WebCore::EventHandler::passMouseDownEventToWidget): (WebCore::EventHandler::handleDrag): (WebCore::EventHandler::sendFakeEventsAfterWidgetTracking): (WebCore::EventHandler::keyboardUIMode): * page/mac/FrameMac.h: Removed. * page/mac/FrameMac.mm: (WebCore::Frame::setBridge): (WebCore::Frame::bridge): (WebCore::Frame::searchForLabelsAboveCell): (WebCore::Frame::searchForLabelsBeforeElement): (WebCore::Frame::matchLabelsAgainstElement): (WebCore::Frame::focusWindow): (WebCore::Frame::unfocusWindow): (WebCore::Frame::imageFromRect): (WebCore::Frame::selectionImage): (WebCore::Frame::snapshotDragImage): (WebCore::Frame::fontAttributesForSelectionStart): (WebCore::Frame::baseWritingDirectionForSelectionStart): (WebCore::Frame::print): (WebCore::Frame::issuePasteCommand): (WebCore::Frame::issueTransposeCommand): (WebCore::Frame::respondToChangedSelection): (WebCore::Frame::textFieldDidBeginEditing): (WebCore::Frame::textFieldDidEndEditing): (WebCore::Frame::textDidChangeInTextField): (WebCore::Frame::textDidChangeInTextArea): (WebCore::Frame::doTextFieldCommandFromEvent): (WebCore::Frame::textWillBeDeletedInTextField): (WebCore::Frame::setSecureKeyboardEntry): (WebCore::Frame::isSecureKeyboardEntry): (WebCore::Frame::setMarkedTextRange): (WebCore::Frame::dashboardRegionsDictionary): (WebCore::Frame::dashboardRegionsChanged): (WebCore::Frame::willPopupMenu): (WebCore::Frame::isCharacterSmartReplaceExempt): (WebCore::Frame::setNeedsReapplyStyles): (WebCore::Frame::customHighlightLineRect): (WebCore::Frame::paintCustomHighlight): (WebCore::Frame::createScriptInstanceForWidget): (WebCore::Frame::windowScriptObject): (WebCore::Frame::cleanupPlatformScriptObjects): * page/mac/WebCoreFrameBridge.h: * page/mac/WebCoreFrameBridge.mm: (createRootObject): (bridge): (-[WebCoreFrameBridge _frame]): * page/qt/EventHandlerQt.cpp: * page/qt/FrameQt.cpp: (WebCore::Frame::unfocusWindow): (WebCore::Frame::focusWindow): (WebCore::Frame::issueTransposeCommand): (WebCore::Frame::respondToChangedSelection): (WebCore::Frame::print): (WebCore::Frame::createScriptInstanceForWidget): (WebCore::Frame::cleanupPlatformScriptObjects): (WebCore::Frame::isCharacterSmartReplaceExempt): * page/qt/FrameQt.h: Removed. * platform/MimeTypeRegistry.h: * platform/graphics/svg/SVGImage.cpp: (WebCore::SVGImage::setData): * platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyChromeClient::shouldInterruptJavaScript): (WebCore::SVGEmptyEditorClient::shouldChangeSelectedRange): * platform/mac/ClipboardMac.h: * platform/mac/ClipboardMac.mm: (WebCore::ClipboardMac::ClipboardMac): * platform/mac/FileChooserMac.mm: (-[OpenPanelController beginSheetWithFrame:]): * platform/mac/MimeTypeRegistryMac.mm: (WebCore::MimeTypeRegistry::getMIMETypeForPath): * platform/mac/PopupMenuMac.mm: (WebCore::PopupMenu::show): * platform/mac/WidgetMac.mm: (WebCore::Widget::setFocus): (WebCore::Widget::setIsSelected): * platform/network/mac/ResourceHandleMac.mm: * platform/network/qt/ResourceHandleManagerQt.cpp: * platform/network/qt/ResourceHandleQt.cpp: (WebCore::ResourceHandle::start): * platform/qt/MimeTypeRegistryQt.cpp: (WebCore::MimeTypeRegistry::getMIMETypeForPath): * platform/qt/PopupMenuQt.cpp: * platform/qt/ScrollViewCanvasQt.cpp: * platform/qt/ScrollViewQt.cpp: * platform/win/TemporaryLinkStubs.cpp: * rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paintCustomHighlight): * rendering/RenderBox.cpp: (WebCore::RenderBox::paintCustomHighlight): * rendering/RootInlineBox.cpp: (WebCore::RootInlineBox::addHighlightOverflow): (WebCore::RootInlineBox::paintCustomHighlight): WebKit: Reviewed by Maciej. Additional coding by Maciej, additional review by Oliver. Added implementations for the new callbacks in EditorClient and ChromeClient (basically moved from WebFrameBridge). Cleaned up some code paths that are not called anymore and done fully inside WebCore now. * DefaultDelegates/WebDefaultContextMenuDelegate.mm: * Misc/WebElementDictionary.mm: * Misc/WebNSAttributedStringExtras.mm: * Plugins/WebBaseNetscapePluginView.mm: (-[WebBaseNetscapePluginView getVariable:value:]): * Plugins/WebNetscapePluginEmbeddedView.mm: * Plugins/WebNetscapePluginStream.mm: * Plugins/WebPluginContainerCheck.mm: * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebChromeClient.mm: (WebChromeClient::shouldInterruptJavaScript): * WebCoreSupport/WebEditorClient.h: * WebCoreSupport/WebEditorClient.mm: (WebEditorClient::shouldChangeSelectedRange): * WebCoreSupport/WebFrameBridge.mm: (-[WebFrameBridge finishInitializingWithPage:frameName:frameView:ownerElement:]): (-[WebFrameBridge fini]): * WebCoreSupport/WebFrameLoaderClient.mm: * WebView/WebArchiver.mm: * WebView/WebFrame.mm: (core): (kit): (-[WebFrame _updateBackground]): * WebView/WebFrameInternal.h: * WebView/WebFrameView.mm: * WebView/WebHTMLRepresentation.mm: * WebView/WebHTMLView.mm: (-[WebHTMLView _updateMouseoverWithEvent:]): (-[WebHTMLView _isEditable]): (-[WebHTMLView validateUserInterfaceItem:]): (-[WebHTMLView maintainsInactiveSelection]): (-[WebHTMLView scrollWheel:]): (-[WebHTMLView acceptsFirstMouse:]): (-[WebHTMLView shouldDelayWindowOrderingForEvent:]): (-[WebHTMLView cut:]): (-[WebHTMLView paste:]): (-[WebHTMLView selectedAttributedString]): * WebView/WebScriptDebugDelegate.mm: * WebView/WebView.mm: (-[WebView _dashboardRegions]): (-[WebView setProhibitsMainFrameScrolling:]): (-[WebView _setInViewSourceMode:]): (-[WebView _inViewSourceMode]): (-[WebView shouldClose]): (-[WebView setEditable:]): WebKitQt: Reviewed by Maciej. Additional coding by Maciej, additional review by Oliver. Add stubs for the new methods in ChormeClient and EditorClient, remove all references to FrameQt. * Api/qwebframe.cpp: (QWebFrame::QWebFrame): * Api/qwebframe_p.h: * Api/qwebpage.cpp: * WebCoreSupport/ChromeClientQt.cpp: (WebCore::ChromeClientQt::shouldInterruptJavaScript): * WebCoreSupport/ChromeClientQt.h: * WebCoreSupport/EditorClientQt.cpp: (WebCore::EditorClientQt::shouldChangeSelectedRange): (WebCore::EditorClientQt::isEditable): * WebCoreSupport/EditorClientQt.h: * WebCoreSupport/FrameLoaderClientQt.cpp: (WebCore::FrameLoaderClientQt::setFrame): (WebCore::FrameLoaderClientQt::webFrame): * WebCoreSupport/FrameLoaderClientQt.h: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 18 Feb, 2007 1 commit
-
-
oliver authored
Reviewed by Adam. WebCore: More drag and drop migration, now the entirety of the drag initiation logic has been rendered platform independent This has required a number of new interfaces, and a reasonable amount of logic migration. As a side effect, this patch also fixes rdar://problem/4945341 There are some basic Qt stubs that should stop the build from failing, however the absence of ClipboardQt means any attempt to initiate a drag may cause a crash. * WebCore.exp: Exporting new symbols * WebCore.xcodeproj/project.pbxproj: New files * dom/Clipboard.cpp: (WebCore::Clipboard::canSaveAsWebArchive): Migrated from WebKit * dom/Clipboard.h: Added more methods to allow Clipboard to be used as a platform independent container for drag and drop * page/DragClient.h: (WebCore::DragClient::declareAndWriteDragImage): This is a mac only helper function, so i've made it have an empty implementation, that way we won't need a PLATFORM(MAC) block in SVGImageEmptyClients * page/DragController.cpp: (WebCore::DragController::dragExited): (WebCore::DragController::performDrag): (WebCore::DragController::tryDocumentDrag): (WebCore::DragController::tryDHTMLDrag): Using RefPtrs now (WebCore::getCachedImage): (WebCore::getImage): Helper functions (WebCore::dragLocForDHTMLDrag): (WebCore::dragLocForSelectionDrag): (WebCore::DragController::startDrag): (WebCore::DragController::doImageDrag): (WebCore::DragController::doSystemDrag): Logic that generates drag images and clipboard content, and initiates the actual system drag operation * page/DragController.h: Method and variable declarations * page/EventHandler.cpp: (WebCore::EventHandler::handleDrag): handleDrag is now platform independent (WebCore::EventHandler::handleTextInputEvent): formatting * page/EventHandler.h: (WebCore::EventHandler::eventLoopHandleMouseDragged): Forgot to define this stub function * page/Frame.h: Declaring dragImageForSelection to provide drag image for selected content * page/mac/DragControllerMac.mm: Defining drag images control vars * page/mac/EventHandlerMac.mm: (WebCore::EventHandler::createDraggingClipboard): Migrated old clipboard creation to here * page/mac/FrameMac.mm: (WebCore::Frame::dragImageForSelection): Wrap FrameMac::selectionImage * page/qt/DragControllerQt.cpp: Defining drag images control vars * page/qt/EventHandlerQt.cpp: (WebCore::EventHandler::createDraggingClipboard): stub * page/qt/FrameQt.cpp: (WebCore::Frame::dragImageForSelection): stub * platform/DragImage.cpp: Added. (WebCore::fitDragImageToMaxSize): (WebCore::createDragImageForSelection): Platform independent processing for drag images * platform/DragImage.h: Added. Declaring typedefs and wrapper functions to abstract the handling of drag images * platform/Pasteboard.h: Declaring extracted writeURL and writeSelection methods * platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyDragClient::willPerformDragSourceAction): (WebCore::SVGEmptyDragClient::startDrag): (WebCore::SVGEmptyDragClient::createDragImageForLink): Stubs FTW! * platform/mac/ClipboardMac.h: (WebCore::ClipboardMac::pasteboard): Provide accessor for underlying NSPasteboard * platform/mac/ClipboardMac.mm: (WebCore::ClipboardMac::hasData): (WebCore::ClipboardMac::writeRange): (WebCore::ClipboardMac::writeURL): (WebCore::ClipboardMac::declareAndWriteDragImage): (WebCore::ClipboardMac::createDragImage): Implemented new Clipboarid functionality. (WebCore::ClipboardMac::dragNSImage): Made this a const method * platform/mac/DragImageMac.mm: Added. (WebCore::dragImageSize): (WebCore::deleteDragImage): (WebCore::scaleDragImage): (WebCore::dissolveDragImageToFraction): (WebCore::createDragImageFromImage): (WebCore::createDragImageIconForCachedImage): Implemented platform specific DragImage functions * platform/mac/PasteboardMac.mm: (WebCore::writeSelection): (WebCore::Pasteboard::writeSelection): (WebCore::writeURL): (WebCore::Pasteboard::writeURL): Extracted member implementations of these functions, so that Clipboard could also make use of this functionality. Pasteboard methods now call the new non-member implementations. Also fixed implementations to respect the list of requested types. * platform/qt/DragImageQt.cpp: Added. (WebCore::dragImageSize): (WebCore::deleteDragImage): (WebCore::scaleDragImage): (WebCore::dissolveDragImageToFraction): (WebCore::createDragImageFromImage): (WebCore::createDragImageIconForCachedImage): Stubs WebKit: Moving the drag initiation logic to WebCore. The redundant code in webkit will be moved out in a later patch. * WebCoreSupport/WebDragClient.h: * WebCoreSupport/WebDragClient.mm: (getTopHTMLView): Helper function (WebDragClient::willPerformDragSourceAction): (WebDragClient::startDrag): (WebDragClient::createDragImageForLink): Implemented new DragClient methods (WebDragClient::declareAndWriteDragImage): Helper function for the Mac to allow new drag and drop code to match behaviour * WebView/WebHTMLView.mm: (-[WebHTMLView _dragImageForURL:withLabel:]): (-[WebHTMLView _dragImageForLinkElement:]): Refactoring old _dragImageForLinkElement function so that the link drag image can be created with just a URL and label, rather than requiring the original element (-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): Removed logic that is no longer necessary (-[WebHTMLView _mouseDownEvent]): The WebDragClient may need the original mouseDownEvent of a drag when initiating a drag * WebView/WebHTMLViewInternal.h: Declaring _mouseDownEvent * WebView/WebHTMLViewPrivate.h: Declaring _dragImageForURL git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 Feb, 2007 1 commit
-
-
adele authored
Reviewed by Brady. Test for http://bugs.webkit.org/show_bug.cgi?id=12599 <rdar://problem/4973507> REGRESSION: When replying in Gmail, the caret disappears when you start to type (12599) * fast/frames/iframe-window-focus-expected.txt: Added. * fast/frames/iframe-window-focus.html: Added. WebCore: Reviewed by Brady. Fix for http://bugs.webkit.org/show_bug.cgi?id=12599 <rdar://problem/4973507> REGRESSION: When replying in Gmail, the caret disappears when you start to type (12599) When a frame's window was focused, the page didn't get updated about the new frame getting focus. This was causing handleKeyPress to fail because it kept getting a selection for the wrong frame (which wasn't editable). Test: fast/frames/iframe-window-focus.html * page/Frame.cpp: (WebCore::Frame::focusWindow): (WebCore::Frame::unfocusWindow): * page/Frame.h: * page/mac/FrameMac.mm: (WebCore::FrameMac::focusWindow): (WebCore::FrameMac::unfocusWindow): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19522 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 07 Feb, 2007 1 commit
-
-
andersca authored
Reviewed by Maciej. Move shouldInterruptJavaScript to the Chrome. * bindings/js/kjs_binding.cpp: (KJS::ScriptInterpreter::shouldInterruptScript): * page/Chrome.cpp: (WebCore::Chrome::shouldInterruptJavaScript): * page/Chrome.h: * page/ChromeClient.h: * page/Frame.h: * page/mac/FrameMac.h: * page/mac/FrameMac.mm: * page/mac/WebCoreFrameBridge.h: * platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyChromeClient::shouldInterruptJavaScript): WebKit: Reviewed by Maciej. Move shouldInterruptJavaScript to the Chrome. * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebChromeClient.mm: (WebChromeClient::shouldInterruptJavaScript): * WebCoreSupport/WebFrameBridge.mm: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19487 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 26 Jan, 2007 1 commit
-
-
ggaren authored
Reviewed by Maciej Stachowiak. Fixed <rdar://problem/4608404> WebScriptObject's _rootObject lack of ownership policy causes crashes (e.g., in Dashcode) The old model for RootObject ownership was either to (1) leak them or (2) assign them to a single owner -- the WebCore::Frame -- which would destroy them when it believed that all of its plug-ins had unloaded. This model was broken because of (1) and also because plug-ins are not the only RootObject clients. All Bindings clients are RootObjects clients, including applications, which outlive any particular WebCore::Frame. The new model for RootObject ownership is to reference-count them, with a throw-back to the old model: The WebCore::Frame tracks the RootObjects it creates, and invalidates them when it believes that all of its plug-ins have unloaded. We maintain this throw-back to avoid plug-in leaks, particularly from Java. Java is completely broken when it comes to releasing JavaScript objects. Comments in our code allege that Java does not always call finalize when collecting objects. Moreoever, my own testing reveals that, when Java does notify JavaScript of a finalize, the data it provides is totally bogus. This setup is far from ideal, but I don't think we can do better without completely rewriting the bindings code, and possibly part of the Java plug-in / VM. Layout tests pass. No additional leaks reported. WebCore/manual-tests/*liveconnect* and a few LiveConnect demos on the web also run without a hitch. const RootObject* => RootObject*, since we need to ref/deref * bindings/NP_jsobject.cpp: (jsDeallocate): deref our RootObjects. Also unprotect or JSObject, instead of just relying on the RootObject to do it for us when it's invalidated. (_isSafeScript): Check RootObject validity. (_NPN_CreateScriptObject): ditto (_NPN_Invoke): ditto (_NPN_Evaluate): ditto (_NPN_GetProperty): ditto (_NPN_SetProperty): ditto (_NPN_RemoveProperty): ditto (_NPN_HasProperty): ditto (_NPN_HasMethod): ditto (_NPN_SetException): ditto * bindings/runtime_root.cpp: Revived bit-rotted LIAR LIAR LIAR comment. LOOK: Added support for invalidating RootObjects without deleting them, which is the main goal of this patch. Moved protect counting into the RootObject class, to emphasize that the RootObject protects the JSObject, and unprotects it upon being invalidated. addNativeReference => RootObject::gcProtect removeNativeReference => RootObject::gcUnprotect ProtectCountSet::contains => RootObject::gcIsProtected I know we'll all be sad to see the word "native" go. * bindings/runtime_root.h: Added ref-counting support to RootObject, with all the standard accoutrements. * bindings/c/c_utility.cpp: (KJS::Bindings::convertValueToNPVariant): If we can't find a valid RootObject, return void instead of just leaking. * bindings/jni/jni_instance.cpp: (JavaInstance::JavaInstance): Don't take a RootObject in our constructor; be like other Instances and require the caller to call setRootObject. This reduces the number of ownership code paths. (JavaInstance::invokeMethod): Check RootObject for validity. * bindings/jni/jni_instance.h: Removed private no-arg constructor. Having an arg constructor accomplishes the same thing. * bindings/jni/jni_jsobject.cpp: (JavaJSObject::invoke): No need to call findProtectCountSet, because finalize() checks for RootObject validity. (JavaJSObject::JavaJSObject): check RootObject for validity (JavaJSObject::call): ditto (JavaJSObject::eval): ditto (JavaJSObject::getMember): ditto (JavaJSObject::setMember): ditto (JavaJSObject::removeMember): ditto (JavaJSObject::getSlot): ditto (JavaJSObject::setSlot): ditto (JavaJSObject::toString): ditto (JavaJSObject::finalize): ditto (JavaJSObject::createNative): No need to tell the RootObject to protect the global object, since the RootObject already owns the interpreter. * bindings/jni/jni_runtime.cpp: (JavaArray::JavaArray): Removed copy construcutor becaue it was unused. Dead code is dangerous code. * bindings/objc/objc_runtime.mm: Added WebUndefined protocol. Previous use of WebScriptObject was bogus, because WebUndefined is not a subclass of WebScriptObject. (convertValueToObjcObject): If we can't find a valid RootObject, return nil instead of just leaking. * bindings/objc/objc_utility.mm: (KJS::Bindings::convertValueToObjcValue): If we can't find a valid RootObject, return nil instead of just leaking. LayoutTests: Reviewed by Maciej Stachowiak. Added test for <rdar://problem/4608404> WebScriptObject's _rootObject lack of ownership policy causes crashes (e.g., in Dashcode) No test for Java or NPP versions of this bug because there's no reliable way to make Java and NPP objects outlive their RootObjects (although Java objects sometimes do). * plugins/root-object-premature-delete-crash-expected.txt: Added. * plugins/root-object-premature-delete-crash.html: Added. WebCore: Reviewed by Maciej Stachowiak. Fixed <rdar://problem/4608404> WebScriptObject's _executionContext lack of ownership policy causes crashes (e.g., in Dashcode) Added RootObject ref-counting goodness. * page/mac/FrameMac.h: * page/mac/FrameMac.mm: (WebCore::FrameMac::cleanupPluginObjects): Invalidate our RootObjects instead of detroying them. Track _bindingRootObject separately from the rest of our RootObjects, since it has its own variable. * page/mac/WebCoreFrameBridge.mm: (createRootObject): Use the Frame's new, more encapsulated function to create a RootObject. * bindings/objc/WebScriptObject.mm: Nixed rootObject setters, since they were unused and they complicated reference-counting. WebKitTools: Reviewed by Maciej Stachowiak. Added support for test for <rdar://problem/4608404> WebScriptObject's _rootObject lack of ownership policy causes crashes (e.g., in Dashcode) * DumpRenderTree/DumpRenderTree.m: (+[LayoutTestController isSelectorExcludedFromWebScript:]): (+[LayoutTestController webScriptNameForSelector:]): (-[LayoutTestController storeWebScriptObject:]): (-[LayoutTestController accessStoredWebScriptObject]): (-[LayoutTestController dealloc]): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@19183 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 19 Jan, 2007 1 commit
-
-
andersca authored
Reviewed by Adam. Move JavaScript alert and status bar functions to the chrome. * bindings/js/kjs_window.cpp: (KJS::WindowFunc::callAsFunction): * page/Chrome.cpp: (WebCore::Chrome::runJavaScriptAlert): (WebCore::Chrome::runJavaScriptConfirm): (WebCore::Chrome::runJavaScriptPrompt): (WebCore::Chrome::setStatusBarText): * page/Chrome.h: * page/ChromeClient.h: * page/Frame.cpp: (WebCore::Frame::setJSStatusBarText): (WebCore::Frame::setJSDefaultStatusBarText): * page/Frame.h: * page/mac/FrameMac.h: * page/mac/FrameMac.mm: * page/mac/WebCoreFrameBridge.h: * platform/graphics/svg/SVGImageEmptyClients.h: (WebCore::SVGEmptyChromeClient::runJavaScriptAlert): (WebCore::SVGEmptyChromeClient::runJavaScriptConfirm): (WebCore::SVGEmptyChromeClient::runJavaScriptPrompt): (WebCore::SVGEmptyChromeClient::setStatusBarText): WebKit: Reviewed by Adam. Move functions from the bridge to the chrome client. * WebCoreSupport/WebChromeClient.h: * WebCoreSupport/WebChromeClient.mm: (WebChromeClient::runJavaScriptAlert): (WebChromeClient::runJavaScriptConfirm): (WebChromeClient::runJavaScriptPrompt): (WebChromeClient::setStatusBarText): * WebCoreSupport/WebFrameBridge.mm: git-svn-id: http://svn.webkit.org/repository/webkit/trunk@18983 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 11 Jan, 2007 1 commit
-
-
ggaren authored
Reviewed by Anders Carlsson. Even more cleanup in preparation for fixing <rdar://problem/4608404> WebScriptObject's _executionContext lack of ownership policy causes crashes (e.g., in Dashcode) Layout tests pass. Renames: findRootObjectForNativeHandleFunction => createRootObject FindRootObjectForNativeHandleFunctionPtr => CreateRootObjectFunction Also removed unnecessary use of "Bindings::" prefix. * JavaScriptCore.exp: * bindings/jni/jni_jsobject.cpp: (JavaJSObject::createNative): (JavaJSObject::convertValueToJObject): (JavaJSObject::convertJObjectToValue): * bindings/runtime_root.cpp: (KJS::Bindings::RootObject::setCreateRootObject): * bindings/runtime_root.h: (KJS::Bindings::RootObject::createRootObject): WebCore: Reviewed by Anders Carlsson. Even more cleanup in preparation for fixing <rdar://problem/4608404> WebScriptObject's _executionContext lack of ownership policy causes crashes (e.g., in Dashcode) Layout tests pass. Renames: findRootObjectForNativeHandleFunction => createRootObject FindRootObjectForNativeHandleFunctionPtr => createRootObjectFunction rootForView => createRootObject getInstanceForView => getPluginInstanceForWidget * page/mac/FrameMac.mm: (WebCore::FrameMac::getAppletInstanceForWidget): Put the NSView * in a void* variable named "nativeHandle" to be more explicit about the fact that JavaScript's "nativeHandle" is just an NSView *. (WebCore::getPluginInstanceForWidget): This function now does the NSView * fetching that its callers used to do. (WebCore::FrameMac::getEmbedInstanceForWidget): Updated for rename. (WebCore::FrameMac::getObjectInstanceForWidget): ditto * page/mac/WebCoreFrameBridge.mm: Killed the WebCoreBridgeInternal category, which was really more of a shmategory. (createRootObject): Removed rootObjectForView, folding it into its only caller, the similarly named rootForView. Renamed the pair to "createRootObject" because that's what they do. (-[WebCoreFrameBridge init]): Updated for renames git-svn-id: http://svn.webkit.org/repository/webkit/trunk@18782 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 08 Jan, 2007 1 commit
-
-
weinig authored
- http://bugs.webkit.org/show_bug.cgi?id=12143 remove Widget code unneeded now that form elements do not use Widget * bindings/objc/DOMHTML.mm: (-[DOMHTMLSelectElement _activateItemAtIndex:]): Removed useless implementation that would only work with NSView-based <select> elements, and added a FIXME about the fact that this function doesn't do anything any more. I think it's used by Safari forms auto-fill. * bridge/mac/WebCoreAXObject.mm: (-[WebCoreAXObject rendererForView:]): Removed code that depends on elementForView:, since that always returns nil now. * html/HTMLFormElement.cpp: (WebCore::HTMLFormElement::~HTMLFormElement): Use a formDestroyed() function rather than clearing m_form directly so that this class doesn't have to be a friend of HTMLGenericFormElement. * html/HTMLGenericFormElement.h: Removed now-unneeded friend declaration for HTMLFormElement. Moved definition of supportsFocus into the .cpp file. Added a public formDestroyed function for use by HTMLFormElement. * html/HTMLGenericFormElement.cpp: (WebCore::HTMLGenericFormElement::attach): Removed widget-specific code. (WebCore::HTMLGenericFormElement::isKeyboardFocusable): Ditto. (WebCore::HTMLGenericFormElement::isMouseFocusable): Ditto. (WebCore::HTMLGenericFormElement::supportsFocus): Added this here; it was in the header file before, for no good reason. * page/EventHandler.h: Removed unused Mac-specific currentEventIsMouseDownInWidget. * page/mac/EventHandlerMac.mm: Ditto. * page/Frame.cpp: (WebCore::Frame::frameForWidget): Changed to use RenderWidget to find the frame rather than the WigetClient element() function. * page/mac/FrameMac.h: Removed unused bridgeForWidget. * page/mac/FrameMac.mm: Ditto. * page/mac/WebCoreFrameBridge.h: Removed elementForView. * page/mac/WebCoreFrameBridge.mm: Ditto. While the scroll bar still did implement WebCoreWidgetHolder, it does not correspond to a DOM element, so this method was always returning nil. * platform/Widget.h: Moved unused types and functions that are still in the platform-specific implementations into a "to be deleted" section: FocusPolicy, NoFocus, TabFocus, ClickFocus, StrongFocus, WheelFocus, lockDrawingFocus, font, focusPolicy, hasFocus, clearFocus, setFont, disableFlushDrawing, enableFlushDrawing, unlockDrawingFocus. Removed unused functions that are not in platform-specific implementations: sizeHint, baselinePosition, checksDescendantsForFocus. * platform/Widget.cpp: Removed functions. * platform/WidgetClient.h: Emptied out the class. Soon we can delete it. * platform/mac/PlatformScrollBarMac.mm: (-[WebCoreScrollBar mouseDown:]): Got rid of unneeded includes, removed use of the WebCoreWidgetHolder protocol and the one method in it, and changed the calls to beforeMouseDown and afterMouseDown to pass the widget pointer in. * platform/mac/WebCoreWidgetHolder.h: Emptied out the file -- to be deleted later. * platform/mac/WidgetMac.mm: (WebCore::Widget::~Widget): Removed code to manage deferredFirstResponder. (WebCore::Widget::hasFocus): Removed body of function and replaced with an assertion that it's never called. Later we'll remove it. (WebCore::Widget::setFocus): Tweaked a bit to work given changes to the FrameMac class. Also added a FIXME. Given how this works, it does not belong in the platform layer. (WebCore::Widget::clearFocus): Removed body of function and replaced with an assertion that it's never called. Later we'll remove it. (WebCore::Widget::focusPolicy): Ditto. (WebCore::Widget::font): Ditto. (WebCore::Widget::setFont): Ditto. (WebCore::Widget::lockDrawingFocus): Ditto. (WebCore::Widget::unlockDrawingFocus): Ditto. (WebCore::Widget::disableFlushDrawing): Ditto. (WebCore::Widget::enableFlushDrawing): Ditto. (WebCore::Widget::paint): Removed obsolete comment. (WebCore::Widget::sendConsumedMouseUp): Removed body of function and replaced with an assertion that it's never called. Later we'll remove it. (WebCore::Widget::setIsSelected): Tweaked a bit to work given changes to the FrameMac class. Also added a FIXME. Given how this works, it does not belong in the platform layer. (WebCore::Widget::beforeMouseDown): Changed to take an explicit Widget parameter. (WebCore::Widget::afterMouseDown): Ditto. * rendering/RenderApplet.cpp: (WebCore::RenderApplet::intrinsicWidth): Changed to not call sizeHint() any more. I didn't change the values returned by the function, but they make no sense and this should probably be fixed later. (WebCore::RenderApplet::intrinsicHeight): Ditto. * rendering/RenderWidget.h: Removed unneeded WidgetClient.h include. Changed RenderWidget to no longer inherit from WidgetClient. Added a find function to find a RenderWidget given a Widget. Removed all the virtual functions that override WidgetClient hooks. * rendering/RenderWidget.cpp: Removed all the WidgetClient functions. (WebCore::widgetRendererMap): Added. Map that gives the RenderWidget for each Widget that is owned by a RenderWidget. (WebCore::RenderWidget::destroy): Removed the setClient call and added a call to remove the widget from the widgetRendererMap. (WebCore::RenderWidget::setWidget): Ditto. (WebCore::RenderWidget::setStyle): Removed the call to Widget::setFont. (WebCore::RenderWidget::find): Added. Returns the RenderWidget for a Widget, if any. - other changes * dom/Node.cpp: (WebCore::Node::dump): Removed unnecessary use of DeprecatedString. (WebCore::appendAttributeDesc): Ditto. (WebCore::Node::showNode): Ditto. (WebCore::Node::formatForDebugger): Ditto. * loader/CachedImage.cpp: (WebCore::CachedImage::createImage): Cleaned up conditional compilation so adding more MIME types here doesn't make the function more and more difficult to read. * page/Frame.h: Removed unneeded includes and declarations. Tweaked formatting. * page/Page.h: Removed unneeded declarations. * platform/ScrollView.h: Removed unneeded includes. * rendering/RenderBlock.cpp: (WebCore::RenderBlock::renderName): Tweaked formatting. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@18677 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-
- 02 Jan, 2007 1 commit
-
-
beidson authored
Reviewed extensively and repeatedly by Darin <rdar://problem/4887137> - WebCore Back/Forward Cache * WebCore.exp: * WebCore.xcodeproj/project.pbxproj: * bridge/mac/WebCorePageState.h: Removed. * bridge/mac/WebCorePageState.mm: Removed. * history/BackForwardList.cpp: Added - This largely emulates the design of WebBackForwardList (WebCore::BackForwardList::BackForwardList): (WebCore::BackForwardList::~BackForwardList): (WebCore::BackForwardList::addItem): (WebCore::BackForwardList::goBack): (WebCore::BackForwardList::goForward): (WebCore::BackForwardList::goToItem): (WebCore::BackForwardList::backItem): (WebCore::BackForwardList::currentItem): (WebCore::BackForwardList::forwardItem): (WebCore::BackForwardList::backListWithLimit): (WebCore::BackForwardList::forwardListWithLimit): (WebCore::BackForwardList::capacity): (WebCore::BackForwardList::setCapacity): (WebCore::BackForwardList::setPageCacheSize): (WebCore::BackForwardList::pageCacheSize): (WebCore::BackForwardList::clearPageCache): (WebCore::BackForwardList::usesPageCache): (WebCore::BackForwardList::backListCount): (WebCore::BackForwardList::forwardListCount): (WebCore::BackForwardList::itemAtIndex): (WebCore::BackForwardList::entries): (WebCore::BackForwardList::close): (WebCore::BackForwardList::closed): (WebCore::BackForwardList::removeItem): (WebCore::BackForwardList::containsItem): (WebCore::BackForwardList::setDefaultPageCacheSize): (WebCore::BackForwardList::defaultPageCacheSize): * history/BackForwardList.h: Added. * history/HistoryItem.cpp: Added - This largely emulates the design of WebBackForwardList (WebCore::defaultNotifyHistoryItemChanged): (WebCore::HistoryItem::HistoryItem): (WebCore::HistoryItem::~HistoryItem): (WebCore::HistoryItem::copy): (WebCore::HistoryItem::setHasPageCache): (WebCore::HistoryItem::retainIconInDatabase): (WebCore::HistoryItem::urlString): (WebCore::HistoryItem::originalURLString): (WebCore::HistoryItem::title): (WebCore::HistoryItem::alternateTitle): (WebCore::HistoryItem::icon): (WebCore::HistoryItem::lastVisitedTime): (WebCore::HistoryItem::url): (WebCore::HistoryItem::originalURL): (WebCore::HistoryItem::target): (WebCore::HistoryItem::parent): (WebCore::HistoryItem::setAlternateTitle): (WebCore::HistoryItem::setURLString): (WebCore::HistoryItem::setURL): (WebCore::HistoryItem::setOriginalURLString): (WebCore::HistoryItem::setTitle): (WebCore::HistoryItem::setTarget): (WebCore::HistoryItem::setParent): (WebCore::HistoryItem::setLastVisitedTime): (WebCore::HistoryItem::visitCount): (WebCore::HistoryItem::setVisitCount): (WebCore::HistoryItem::scrollPoint): (WebCore::HistoryItem::setScrollPoint): (WebCore::HistoryItem::clearScrollPoint): (WebCore::HistoryItem::setDocumentState): (WebCore::HistoryItem::documentState): (WebCore::HistoryItem::clearDocumentState): (WebCore::HistoryItem::isTargetItem): (WebCore::HistoryItem::setIsTargetItem): (WebCore::HistoryItem::alwaysAttemptToUsePageCache): (WebCore::HistoryItem::setAlwaysAttemptToUsePageCache): (WebCore::HistoryItem::addChildItem): (WebCore::HistoryItem::childItemWithName): (WebCore::HistoryItem::recurseToFindTargetItem): (WebCore::HistoryItem::targetItem): (WebCore::HistoryItem::pageCache): (WebCore::HistoryItem::children): (WebCore::HistoryItem::hasChildren): (WebCore::HistoryItem::formContentType): (WebCore::HistoryItem::formReferrer): (WebCore::HistoryItem::rssFeedReferrer): (WebCore::HistoryItem::setRSSFeedReferrer): (WebCore::HistoryItem::setFormInfoFromRequest): (WebCore::HistoryItem::formData): (WebCore::HistoryItem::mergeAutoCompleteHints): (WebCore::HistoryItem::hasPageCache): (WebCore::timer): Function to manage the global release timer (WebCore::pendingPageCacheToRelease): Function to manage the global queue of caches to be released (WebCore::HistoryItem::releasePageCache): (WebCore::closeObjectsInPendingPageCaches): (WebCore::HistoryItem::releaseAllPendingPageCaches): (WebCore::HistoryItem::scheduleRelease): (WebCore::HistoryItem::print): * history/HistoryItem.h: Added. * history/mac/HistoryItemMac.mm: Added. (WebCore::HistoryItem::viewState): In the future we need a platform agnostic way to manage the view state (WebCore::HistoryItem::setViewState): (WebCore::HistoryItem::getTransientProperty): Transient properties are, for now, only a Mac concept (WebCore::HistoryItem::setTransientProperty): * history/HistoryItemTimer.cpp: Added (WebCore::HistoryItemTimer::HistoryItemTimer): We need a specific class to be the history item timer because WebCore::Timers only work when you have an instance of an object, but the caches pending release is a static concept (WebCore::HistoryItemTimer::isActive): (WebCore::HistoryItemTimer::schedule): (WebCore::HistoryItemTimer::invalidate): (WebCore::HistoryItemTimer::callReleasePageCache): * history/HistoryItemTimer.h: Added. * history/PageCache.cpp Added - This is a class that contains the fields that used to be in an NSDictionary in WebKit (WebCore::PageCache::PageCache): (WebCore::PageCache::setPageState): (WebCore::PageCache::~PageCache): (WebCore::PageCache::pageState): (WebCore::PageCache::setDocumentLoader): (WebCore::PageCache::documentLoader): (WebCore::PageCache::setTimeStamp): (WebCore::PageCache::setTimeStampToNow): (WebCore::PageCache::timeStamp): * history/PageCache.h: Added. * history/mac/PageCacheMac.mm: Added. (WebCore::PageCache::close): (WebCore::PageCache::setDocumentView): In the future we need a platform agnostic way to manage the documentView (WebCore::PageCache::documentView): * loader/DocumentLoader.cpp: (WebCore::DocumentLoader::loadFromPageCache): (WebCore::DocumentLoader::setLoadingFromPageCache): (WebCore::DocumentLoader::isLoadingFromPageCache): (WebCore::DocumentLoader::originalURL): (WebCore::DocumentLoader::requestURL): (WebCore::DocumentLoader::responseURL): (WebCore::DocumentLoader::responseMIMEType): * loader/DocumentLoader.h: * loader/FrameLoader.cpp: Responsibilities previously scattered in WebKit but concentrated in WebView and WebFrame are now here, where they should be. (WebCore::FrameLoader::clear): (WebCore::FrameLoader::restoreDocumentState): (WebCore::FrameLoader::goBackOrForward): (WebCore::FrameLoader::provisionalLoadStarted): (WebCore::FrameLoader::canCachePage): (WebCore::FrameLoader::commitProvisionalLoad): (WebCore::FrameLoader::transitionToCommitted): (WebCore::FrameLoader::open): (WebCore::FrameLoader::didFirstLayout): (WebCore::FrameLoader::dispatchDidChangeLocationWithinPage): (WebCore::FrameLoader::dispatchDidFinishLoadToClient): (WebCore::FrameLoader::updateGlobalHistoryForStandardLoad): Marked for usage in future GlobalHistory (uses client for now) (WebCore::FrameLoader::updateGlobalHistoryForReload): Ditto (WebCore::FrameLoader::shouldGoToHistoryItem): (WebCore::FrameLoader::addExtraFieldsToRequest): (WebCore::FrameLoader::addHistoryItemForFragmentScroll): (WebCore::FrameLoader::loadProvisionalItemFromPageCache): (WebCore::FrameLoader::createPageCache): (WebCore::FrameLoader::shouldTreatURLAsSameAsCurrent): (WebCore::FrameLoader::createItem): (WebCore::FrameLoader::addBackForwardItemClippedAtTarget): (WebCore::FrameLoader::createItemTree): (WebCore::FrameLoader::saveScrollPositionAndViewStateToItem): (WebCore::FrameLoader::restoreScrollPositionAndViewState): (WebCore::FrameLoader::purgePageCache): (WebCore::FrameLoader::invalidateCurrentItemPageCache): (WebCore::FrameLoader::saveDocumentState): (WebCore::FrameLoader::loadItem): (WebCore::FrameLoader::urlsMatchItem): (WebCore::FrameLoader::goToItem): (WebCore::FrameLoader::recursiveGoToItem): (WebCore::FrameLoader::childFramesMatchItem): (WebCore::FrameLoader::updateHistoryForStandardLoad): (WebCore::FrameLoader::updateHistoryForClientRedirect): (WebCore::FrameLoader::updateHistoryForBackForwardNavigation): (WebCore::FrameLoader::updateHistoryForReload): (WebCore::FrameLoader::updateHistoryForInternalLoad): (WebCore::FrameLoader::updateHistoryForCommit): (WebCore::FrameLoader::saveDocumentAndScrollState): (WebCore::FrameLoader::currentHistoryItem): (WebCore::FrameLoader::previousHistoryItem): (WebCore::FrameLoader::provisionalHistoryItem): (WebCore::FrameLoader::setCurrentHistoryItem): (WebCore::FrameLoader::setPreviousHistoryItem): (WebCore::FrameLoader::setProvisionalHistoryItem): * loader/FrameLoader.h: * loader/FrameLoaderClient.h: * loader/mac/DocumentLoaderMac.mm: (WebCore::DocumentLoader::DocumentLoader): (WebCore::DocumentLoader::getResponseRefreshAndModifiedHeaders): (WebCore::DocumentLoader::commitIfReady): (WebCore::DocumentLoader::urlForHistory): * loader/mac/FrameLoaderMac.mm: (WebCore::FrameLoader::load): (WebCore::FrameLoader::startLoading): (WebCore::FrameLoader::receivedMainResourceError): (WebCore::FrameLoader::continueFragmentScrollAfterNavigationPolicy): (WebCore::FrameLoader::opened): (WebCore::FrameLoader::dataURLBaseFromRequest): (WebCore::FrameLoader::didChangeTitle): (WebCore::FrameLoader::continueLoadAfterNavigationPolicy): (WebCore::FrameLoader::checkLoadCompleteForThisFrame): * page/FrameTree.cpp: (WebCore::FrameTree::removeChild): * page/Page.cpp: Transfered a handful of concepts from WebView (WebCore::Page::Page): (WebCore::Page::~Page): (WebCore::Page::backForwardList): (WebCore::Page::goBack): (WebCore::Page::goForward): (WebCore::Page::goToItem): * page/Page.h: * page/PageState.h: * page/mac/FrameMac.h: * page/mac/FrameMac.mm: * page/mac/WebCoreFrameBridge.h: * page/mac/WebCoreFrameBridge.mm: * platform/KURL.cpp: (WebCore::KURL::print): Added debug only method for debugging convenience * platform/KURL.h: * platform/Logging.cpp: (WebCore::): Added some logging channels * platform/Logging.h: * platform/PlatformString.h: (WebCore::nsStringNilIfEmpty): Added for WebKit use * platform/SystemTime.h: Added userIdleTime() * platform/graphics/svg/SVGImage.cpp: * platform/graphics/svg/SVGImageEmptyClients.h: Updated for new FrameLoaderClient methods (WebCore::SVGEmptyFrameLoaderClient::setDocumentViewFromPageCache): (WebCore::SVGEmptyFrameLoaderClient::updateGlobalHistoryForStandardLoad): (WebCore::SVGEmptyFrameLoaderClient::updateGlobalHistoryForReload): (WebCore::SVGEmptyFrameLoaderClient::shouldGoToHistoryItem): (WebCore::SVGEmptyFrameLoaderClient::saveScrollPositionAndViewStateToItem): (WebCore::SVGEmptyFrameLoaderClient::saveDocumentViewToPageCache): (WebCore::SVGEmptyFrameLoaderClient::canCachePage): (WebCore::SVGEmptyEditorClient::~SVGEmptyEditorClient): * platform/mac/LoggingMac.mm: (WebCore::InitializeLoggingChannelsIfNecessary): * platform/mac/SystemTimeMac.cpp: (WebCore::userIdleTime): * platform/mac/WebCoreSystemInterface.h: Added wkSecondsSinceLastInput for use in userIdleTime * platform/mac/WebCoreSystemInterface.mm: * platform/network/FormData.cpp: (WebCore::FormData::FormData): (WebCore::FormData::copy): * platform/network/FormData.h: * platform/network/ResourceHandle.h: * platform/network/mac/ResourceHandleMac.mm: (WebCore::ResourceHandle::willLoadFromCache): For "are you sure you want to resubmit?" nag * platform/qt/TemporaryLinkStubs.cpp: (WebCore::userIdleTime): * rendering/RenderPart.h: WebKit: Reviewed extensively and repeatedly by Darin <rdar://problem/4887137> - WebCore Back/Forward Cache Most things not specifically commented on in the ChangeLog can be summed up as "Do things exactly the same way as we used to, but just stick in WebCore-land as much as possible" * History/WebBackForwardList.mm: (kitPrivate): Convenience functions to help with subbing "WebBackForwardListPrivate" for WebCore::BackForwardList (core): (backForwardListWrappers): A HashMap pattern used to map WebCore objects to their WebKit counterpart (kit): (+[WebBackForwardList setDefaultPageCacheSizeIfNecessary]): (-[WebBackForwardList initWithWebCoreBackForwardList:]): (-[WebBackForwardList init]): (-[WebBackForwardList dealloc]): (-[WebBackForwardList finalize]): (-[WebBackForwardList _close]): (-[WebBackForwardList addItem:]): (-[WebBackForwardList removeItem:]): (-[WebBackForwardList containsItem:]): (-[WebBackForwardList goBack]): (-[WebBackForwardList goForward]): (-[WebBackForwardList goToItem:]): (-[WebBackForwardList backItem]): (-[WebBackForwardList currentItem]): (-[WebBackForwardList forwardItem]): (vectorToNSArray): (-[WebBackForwardList backListWithLimit:]): (-[WebBackForwardList forwardListWithLimit:]): (-[WebBackForwardList capacity]): (-[WebBackForwardList setCapacity:]): (-[WebBackForwardList description]): (-[WebBackForwardList _clearPageCache]): (-[WebBackForwardList setPageCacheSize:]): (-[WebBackForwardList pageCacheSize]): (-[WebBackForwardList _usesPageCache]): (-[WebBackForwardList backListCount]): (-[WebBackForwardList forwardListCount]): (-[WebBackForwardList itemAtIndex:]): * History/WebBackForwardListInternal.h: Added. * History/WebHistory.m: Removed. * History/WebHistory.mm: Added - Needed to be .mm to accept C++ header style (-[_WebCoreHistoryProvider containsItemForURLLatin1:length:]): (-[_WebCoreHistoryProvider containsItemForURLUnicode:length:]): * History/WebHistoryItem.mm: (kitPrivate): Same pattern as WebBackForwardList (core): (historyItemWrappers): (WKNotifyHistoryItemChanged): (-[WebHistoryItem init]): (-[WebHistoryItem initWithURLString:title:lastVisitedTimeInterval:]): (-[WebHistoryItem dealloc]): (-[WebHistoryItem finalize]): (-[WebHistoryItem copyWithZone:]): (-[WebHistoryItem URLString]): (-[WebHistoryItem originalURLString]): (-[WebHistoryItem title]): (-[WebHistoryItem setAlternateTitle:]): (-[WebHistoryItem alternateTitle]): (-[WebHistoryItem icon]): (-[WebHistoryItem lastVisitedTimeInterval]): (-[WebHistoryItem hash]): (-[WebHistoryItem isEqual:]): (-[WebHistoryItem description]): (kit): (+[WebHistoryItem entryWithURL:]): (+[WebHistoryItem initWindowWatcherIfNecessary]): (-[WebHistoryItem initWithURL:target:parent:title:]): (-[WebHistoryItem initWithWebCoreHistoryItem:]): (-[WebHistoryItem setTitle:]): (-[WebHistoryItem setVisitCount:]): (-[WebHistoryItem setViewState:]): (-[WebHistoryItem _mergeAutoCompleteHints:]): (-[WebHistoryItem initFromDictionaryRepresentation:]): (-[WebHistoryItem scrollPoint]): (-[WebHistoryItem _transientPropertyForKey:]): (-[WebHistoryItem _setTransientProperty:forKey:]): (-[WebHistoryItem dictionaryRepresentation]): (-[WebHistoryItem target]): (-[WebHistoryItem isTargetItem]): (-[WebHistoryItem visitCount]): (-[WebHistoryItem RSSFeedReferrer]): (-[WebHistoryItem setRSSFeedReferrer:]): (-[WebHistoryItem children]): (-[WebHistoryItem setAlwaysAttemptToUsePageCache:]): (-[WebHistoryItem URL]): (-[WebHistoryItem _setLastVisitedTimeInterval:]): (-[WebHistoryItem _lastVisitedDate]): (-[WebHistoryItem targetItem]): (+[WebHistoryItem _releaseAllPendingPageCaches]): (-[WebWindowWatcher windowWillClose:]): * History/WebHistoryItemInternal.h: * History/WebHistoryItemPrivate.h: * WebCoreSupport/WebFrameBridge.mm: * WebCoreSupport/WebFrameLoaderClient.h: * WebCoreSupport/WebFrameLoaderClient.mm: (WebFrameLoaderClient::setDocumentViewFromPageCache): (WebFrameLoaderClient::detachedFromParent1): (WebFrameLoaderClient::loadedFromPageCache): (WebFrameLoaderClient::updateGlobalHistoryForStandardLoad): (WebFrameLoaderClient::updateGlobalHistoryForReload): (WebFrameLoaderClient::shouldGoToHistoryItem): (WebFrameLoaderClient::frameLoadCompleted): (WebFrameLoaderClient::saveScrollPositionAndViewStateToItem): (WebFrameLoaderClient::restoreScrollPositionAndViewState): (WebFrameLoaderClient::provisionalLoadStarted): (WebFrameLoaderClient::setTitle): (WebFrameLoaderClient::saveDocumentViewToPageCache): (WebFrameLoaderClient::canCachePage): * WebCoreSupport/WebSystemInterface.m: (InitWebCoreSystemInterface): * WebKit.xcodeproj/project.pbxproj: * WebView/WebDataSource.mm: * WebView/WebDataSourceInternal.h: * WebView/WebFrame.mm: (-[WebFramePrivate dealloc]): (-[WebFrame _canCachePage]): (-[WebFrame _loadURL:referrer:intoChild:]): * WebView/WebFrameInternal.h: * WebView/WebFrameView.mm: (-[WebFrameView initWithFrame:]): (-[WebFrameView keyDown:]): * WebView/WebHTMLView.m: (-[WebHTMLView closeIfNotCurrentView]): Added for a dirty hack in WebCore that is marked with a FIXME Radar * WebView/WebHTMLViewInternal.h: * WebView/WebView.mm: (-[WebViewPrivate init]): (-[WebViewPrivate dealloc]): (-[WebView _close]): (-[WebView _loadBackForwardListFromOtherView:]): (-[WebView _commonInitializationWithFrameName:groupName:]): (-[WebView initWithCoder:]): (-[WebView backForwardList]): (-[WebView goBack]): (-[WebView goForward]): (-[WebView goToBackForwardItem:]): (-[WebView canGoBack]): (-[WebView canGoForward]): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@18541 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-