Timeline
Mar 2, 2003:
- 10:48 PM Changeset in webkit [3724] by
-
- 3 edits in trunk/WebCore
Use a KWQPopUpButton in place of NSPopUpButton. The only addition is that
it implements the KWQWidgetHolder protocol. This is needed in order to
auto set PopUps during autofill.
Reviewed by Maciej.
- kwq/KWQComboBox.mm: (QComboBox::QComboBox): Make a KWQPopUpButton instead of NSPopUpButton. (QComboBox::~QComboBox): trivial s/KWQPopUpButton/NSPopUpButton/ (QComboBox::insertItem): ditto (QComboBox::sizeHint): ditto (QComboBox::baselinePosition): ditto (QComboBox::clear): ditto (QComboBox::setCurrentItem): ditto (QComboBox::currentItem): ditto (-[KWQPopUpButtonCell widget]): Also implement KWQWidgetHolder (-[KWQPopUpButton widget]): Implement KWQWidgetHolder by calling our cell.
Feb 28, 2003:
- 11:44 PM Changeset in webkit [3723] by
-
- 2 edits in trunk/WebKit
Make WebDOM* classes private instead of public. This change
was made before but the project file must have been accidentally
overwritten. Make the WebPlugin* classes private.
Reviewed by me.
- WebKit.pbproj/project.pbxproj:
- 8:07 PM Changeset in webkit [3722] by
-
- 4 edits in trunk/WebCore
- khtml/css/parser.y: Fixed bad check-in that broke the build in a subtle way.
- khtml/css/parser.cpp: Regenerated.
- 7:15 PM Changeset in webkit [3721] by
-
- 26 edits in trunk
WebBrowser:
Large wad of autocomplete-autofill implementation.
AutoFill makes its first appearance. Only triggered by debug menu item now,
with cmd-A equivalent.
A new class AutoFillController, maintains per-form state while the user is
working with the form, and holds a bunch of autofill behavior (and probably
more later when I do some code movement after these changes). State we save
includes what fields have been autofilled, and which fields have matches that
came from AB.
Uses of AB data are saved in the FormsCompletion DB for proper LRU wrt ad-hoc
data entries. To do this we save an "ABMarker" array of info instead of the
raw string used for an ad-hoc entry.
A ProxyABProperty is specified in the ABMappings file in the case where multiple
"real" props are specified so that are contatenated. I needed a single prop
name as a reliable key. (example of this: "Name" fields get FirstName+LastName)
FormCompletionController uses a new class AddressBookMatch for elements in the
_matches array that come from AB. The class is basically an open struct around
a handful of fields.
Reviewed by Chris.
- BrowserWebController.m: (-[BrowserWebController _closeDataSources:]): Make call to free up autocomplete state when the controller is going away. (-[BrowserWebController close]): Call _closeDataSources.
- BrowserWindowController.h:
- BrowserWindowController.m: (-[BrowserWindowController updateKeyboardLoop]): Coding nit - removed internal return in favor of an else clause. (-[BrowserWindowController validateUserInterfaceItem:]): Validate autofill: selector. (-[BrowserWindowController autoFill:]): Just call FormCompletionController. (-[FormDelegate willSubmitForm:withValues:]): Pass along new form param.
- CompletionController.h: We keep our own _selectedMatchIndex instead of always looking to the tableView's selected row, since the TableView might not exist.
- CompletionController.m: (-[CompletionController initWithSourceField:]): Init _selectedMatchIndex. (-[CompletionController dealloc]): Make sure stuff is freed, since abortCompletion is no longer freeing these things. (-[CompletionController _selectMatchAtIndex:]): Newly factored code. (-[CompletionController _showMatchesWindow:]): Call factored code. (-[CompletionController abortCompletion]): No longer has distinct behavior from _hideMatchesWindow. I was getting screwed by this method freeing state that I would now later need (like the underlying matching object instead of just the string in the TextField), so we just free the stuff in dealloc. (-[CompletionController selectedMatch]): Factor some code here. Use our _selectedMatchIndex instead of the TableView's selected row. (-[CompletionController reflectSelectedRow]): Call factored code. Exposed for subclassing (removed leading _). (-[CompletionController reflectFinalSelectedRow]): Call factored code. Exposed for subclassing (removed leading _). (-[CompletionController completeString:]): Set _selectedMatchIndex after a query. (-[CompletionController leavingFieldReflectsFinalString]): New hook for diff behavior in forms case. (-[CompletionController controlTextDidEndEditing:]): Conditionally put the final string into the field when we leave the field. Off for URLs, on for forms. (-[CompletionController control:textView:doCommandBySelector:]): Get rid of wrap-around when arrow selecting in dropdown. Call factored code. On CR, only reflect the final string whenever are going to send the action. (-[CompletionController goToItemAtRow:]): Don't perform the TextField's action on double click if we don't perform it when you hit return when the dropdown is showing. (-[CompletionController tableViewSelectionDidChange:]): Name change of reflectSelectedRow.
- Debug/DebugUtilities.m: (-[DebugUtilities createDebugMenu]): Add menu item.
- FormCompletionController.h:
- FormCompletionController.m: (-[FormCompletionController _cryptData:encode:]): Better error msg. (+[FormCompletionController frame:willSubmitForm:withValues:]): Accept new form arg, and use it to look up info about how we edited the form. For any values being submitted that came from AB, store a marker array in the CompletionDB instead of the raw string. Make sure timestamp is always updated, even if the LRU was in the right order. (+[FormCompletionController autoFillInController:]): Handoff to AutofillController. (+[FormCompletionController clearAutoFillStateForFrame:]): Handoff to AutofillController. (-[FormCompletionController initWithSourceField:frame:]): Use formIsLoginForm: instead of elementIsInLoginForm. Remember field's form. (-[FormCompletionController dealloc:): Free field's form. (-[FormCompletionController controlTextDidChange:]): Clear any record we might have had that we autofilled this field, since it has now been edited since. (-[FormCompletionController _indexOfMarkerInMatches:]): Utility method. Find an ABMarker we previously saved that matches the current match from AB we are about to submit. (+[FormCompletionController _abSingleValue:]): Now a class method for use during autofill. Some tighter ASSERT checking. (+[FormCompletionController _abValuesForProperty:key:label:]): Now a class method for use during autofill. Build an AddressBookMatch object for each match instead of just returning the literal string. (+[FormCompletionController _addABMatchesToArray:forString:fieldName:]): Now a class method for use during autofill, field name is param for same reason. For multi-prop ABMappings, make sure AddressBookMatch ends up with the proxy property. When combining ABMatches with previousData matches, replace any markers of a previous ABMatch with the current one, so as to preserve LRU ordering. Also replace any previous literal string matches that happen to match current AB match. (+[FormCompletionController _addPreviousDataMatchesToArray:forString:frame:fieldName:]): Now a class method for use during autofill, new params for same reason. Allow ABMarkers (which are stored as arrays) to pass from the stored data to our matches array that we build. (+[FormCompletionController _matchesForString:frame:fieldName:]): New a class method for use during autofill. Mostly code factored from queryResultsForString. At the very end of the query, filter out any remaining ABMarkers from the results, since those make no sense to show to a user. (stringFromMatch): Utility to make a string from one of out matches, which can now be a literal string or an AddressBookMatch. (matchComparator): New sort comparator that handles strings and AddressBookMatches. (-[FormCompletionController queryResultsForString:startingMatch:]): Much code factored out. Sort using new comparator. (-[FormCompletionController reflectFinalSelectedRow]): Override to possibly record that we filled a field with AB data. (-[FormCompletionController intermediateMatchingStringForResult]): Use stringFromMatch to interpret AddressBookMatches. (-[FormCompletionController finalMatchingStringForResult]): Use stringFromMatch to interpret AddressBookMatches. (-[FormCompletionController leavingFieldReflectsFinalString]): Return YES for different behavior than URL case. (+[AutoFillController _markAutoFilledColor]): Return shares color. (+[AutoFillController autoFillInController]): Do an autofill. Figure out the form to work on, make an autofiller, cut it loose. (+[AutoFillController autoFillerForFrame:form:create:]): Lookup autofiller. (+[AutoFillController abMatchInFrame:form:fieldName:]): Return any AB match we've stuck into for a particular field during the current editing session with that form. (+[AutoFillController recordABMatch:inFrame:form:fieldName:]): Record any AB match we've stuck into for a particular field during the current editing session with that form. (+[AutoFillController clearAutoFillStateForFrame:]): Release any autofillers used for the given frame. (+[AutoFillController clearAutoFilledView:inFrame:form:]): Clear state for a field when it is manually edited. (-[AutoFillController dealloc]): Free our state. (-[AutoFillController _autoFillWidget:rep:]): Do autofill of one widget. (-[AutoFillController autoFill]): Do autofill of our form. (-[AutoFillController recordABMatch:fieldName:]): Record a field that we've set with an ABMatch. (-[AutoFillController clearView:]): Remove a view from the list we've autofilled. (-[AddressBookMatch initWithValue:property:key:label:]): Trivial class' init. (-[AddressBookMatch dealloc:]): Trivial class' dealloc.
- LocationChangeHandler.m: (-[LocationChangeHandler willCloseLocationForDataSource:]): Implement new callout to free the completion state for that frame.
WebKit:
Various support for autofill/autocomplete.
We receive a form along with the formValues from WC on submit, which we
just pass along to the FormDelegate. As part of this we store the values
and the form together in a new private WebFormState class. Lots of glue
for passing this around instead of just the values dict.
Send willCloseLocationForDataSource when we are finally through with a page.
Reviewed by Darin.
- WebCoreSupport.subproj/WebBridge.m: (-[WebBridge loadURL:reload:triggeringEvent:form:formValues:]): Pass along form along with values (-[WebBridge postWithURL:data:contentType:triggeringEvent:form:formValues:]): Pass along form along with values
- WebView.subproj/WebDataSourcePrivate.m: (-[WebDataSource _commitIfReady:]): Call frame to send willCloseLocationForDataSource.
- WebView.subproj/WebFormDelegate.h:
- WebView.subproj/WebFormDelegate.m: (-[WebFormDelegate frame:willSubmitForm:withValues:]): Pass form along with values
- WebView.subproj/WebFrame.m: (-[WebFrame loadRequest:]): Pass FormState instead of just values. (-[WebFrame reload]): Pass FormState instead of just values.
- WebView.subproj/WebFramePrivate.h:
- WebView.subproj/WebFramePrivate.m: <<prepare-ChangeLog flailed on this file>> Lots of routines were we pass FormState instead of the form values dict -([WebFrame _closeOldDataSources]): New, sends willCloseLocation for whole frame tree. New, trivial, WebFormState class.
- WebView.subproj/WebHTMLRepresentation.h:
- WebView.subproj/WebHTMLRepresentation.m: (-[WebHTMLRepresentation formIsLoginForm:]): Changed to take form instead of form field. (-[WebHTMLRepresentation formForElement:]): New, just pass through bridge. (-[WebHTMLRepresentation controlsInForm:]): New, just pass through bridge.
- WebView.subproj/WebLocationChangeDelegate.h: Add willCloseLocationForDataSource.
- WebView.subproj/WebLocationChangeDelegate.m: (-[WebLocationChangeDelegate willCloseLocationForDataSource:]): Default impl.
- WebView.subproj/WebMainResourceClient.m: (-[WebMainResourceClient continueAfterNavigationPolicy:formState:]): Pass FormState instead of just values. (-[WebMainResourceClient resource:willSendRequest:]): Pass FormState instead of just values.
WebCore:
More support for autofill, autocomplete.
Pass the form element along with the values to WK when submitting.
isLoginForm looks for a single plain text field along with password fields, so as not to match registration forms.
Added means to find the "current" form on a page.
Added means to return the whole set of controls on a form.
Reviewed by Darin.
- khtml/html/html_elementimpl.h: Added isGenericFormElement().
- khtml/html/html_formimpl.cpp: (HTMLFormElementImpl::isLoginForm): See above. (HTMLFormElementImpl::submit): Also register form when registering values, so it will be sent over bridge.
- kwq/KWQKHTMLPart.h: New ivar to save form along with form values to be submitted.
- kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::KWQKHTMLPart): Init _formAboutToBeSubmitted ivar. (KWQKHTMLPart::~KWQKHTMLPart): Free _formAboutToBeSubmitted ivar. (KWQKHTMLPart::openURL): Pass form to bridge along with values. (KWQKHTMLPart::openURLRequest): Pass form to bridge along with values. (scanForForm): Helper function to scan forward in the DOM for a form. (KWQKHTMLPart::currentForm): Returns current form. (KWQKHTMLPart::clearRecordedFormValues): Clear _formAboutToBeSubmitted. (KWQKHTMLPart::recordFormValue): Record _formAboutToBeSubmitted too. (KWQKHTMLPart::submitForm): Pass form to bridge along with values. (KWQKHTMLPart::urlSelected): Pass form to bridge along with values.
- kwq/KWQKHTMLPartBrowserExtension.mm: (KHTMLPartBrowserExtension::createNewWindow): Pass form to bridge along with values.
- kwq/KWQTextField.mm: (-[KWQTextField setStringValue:]): Call textChanged so the changes actually make it to khtml.
- kwq/WebCoreBridge.h:
- kwq/WebCoreBridge.mm: (viewForElement): New helper. (formElementFromDOMElement): New helper. (-[WebCoreBridge formIsLoginForm:]): Changed API to operate on a form instead of a field. (-[WebCoreBridge currentForm]): New method, described above. (-[WebCoreBridge controlsInForm:]): New method, described above.
- kwq/WebCoreDOMNode.mm: (-[WebCoreDOMNode isEqual:]): Implement this to == compare the element we contain. (-[WebCoreDOMNode hash]): Implement to hash element ptr we contain.
- 6:45 PM Changeset in webkit [3720] by
-
- 10 edits in trunk
WebCore:
Reviewed by Trey.
- fixed 3180170 - filepile.com does not work correctly
I fixed this by making referrer work correctly for targetted
cross-frame and cross-window links. It is still not working right
for JavaScript window.open though.
- khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Add some FIXMEs about not handling referrer right.
- kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURL): Pass referrer. (KWQKHTMLPart::openURLRequest): Pass referrer. (KWQKHTMLPart::submitForm): Pass referrer. (KWQKHTMLPart::urlSelected): Pass referrer.
- kwq/KWQKHTMLPartBrowserExtension.mm: (KHTMLPartBrowserExtension::createNewWindow): Pass referrer.
- kwq/WebCoreBridge.h: Ad referrer argument to loadURL:
WebKit:
Reviewed by Trey.
- fixed 3180170 - filepile.com does not work correctly
I fixed this by making referrer work correctly for targetted
cross-frame and cross-window links. It is still not working right
for JavaScript window.open though.
- WebCoreSupport.subproj/WebBridge.m: (-[WebBridge createWindowWithURL:frameName:]): Set referrer. (-[WebBridge loadURL:referrer:reload:triggeringEvent:formValues:]): Pass referrer along to frame. (-[WebBridge postWithURL:referrer:data:contentType:triggeringEvent:formValues:]): Likewise.
- WebView.subproj/WebFramePrivate.h:
- WebView.subproj/WebFramePrivate.m: (-[WebFrame _loadItem:fromItem:withLoadType:]): Pass referrer. (-[WebFrame _loadURL:referrer:loadType:triggeringEvent:formValues:]): Use passed-in referrer (link could have been clicked in another frame). (-[WebFrame _loadURL:intoChild:]): Pass referrer. (-[WebFrame _postWithURL:referrer:data:contentType:triggeringEvent:formValues:]): Use passed-in referrer.
- 3:19 PM Changeset in webkit [3719] by
-
- 3 edits in trunk/WebCore
Exclude <BR>s from the text-dec check. Really fixes 3185121.
Reviewed by john
- khtml/rendering/render_line.cpp: (shouldDrawDecoration):
- 3:10 PM Changeset in webkit [3718] by
-
- 5 edits in trunk/WebCore
Reviewed by Dave.
- fixed some storage leaks; this code is still leaking when we run cvs-base
- khtml/css/parser.y: (import): Use the new maybe_media_list (ported from KDE), and delete the media list if the current item we are parsing is not a style sheet. (maybe_media_list): Added. (ported from KDE). (media_list): Added error case so we don't leak in that case (ported from KDE). (media): Use media_list instead of media_list2 (ported from KDE). (selector_list): Added error case so we don't leak in that case (ported from KDE). (selector): Added error case so we don't leak in that case (ported from KDE). (simple_selector): Added nil-checking (ported from KDE). (element_name): Use 0xFFFF instead of -1 (ported from KDE). (specifier_list): Added error case so we don't leak in that case (ported from KDE). (declaration): Delete the expr if we don't use it because property is 0. (expr): Added error case so we don't leak in that case (ported from KDE).
- khtml/css/cssparser.cpp: (CSSParser::parseSheet): Delete the rule in case one was created. (CSSParser::parseRule): Zero out the rule after extracting it to return. (CSSParser::parseValue): Delete the rule in case one was created. (CSSParser::parseDeclaration): Delete the rule in case one was created.
- khtml/css/parser.cpp: Regenerated.
- 2:07 PM Changeset in webkit [3717] by
-
- 4 edits in trunk/WebKit
Reviewed by Trey.
- fixed 3183575 -- <https://sbcreg.sbcglobal.net> casuses infinite refresh & crash
The page had history.forward(1) which was causing us to reload.
- WebCoreSupport.subproj/WebBridge.m: (-[WebBridge goBackOrForward:]): Handle edge cases by checking backListCount and forwardListCount at this level. Be sure to do nothing when we are already on the right page.
- History.subproj/WebBackForwardList.h: Added forwardListCount, updated comment for entryAtIndex.
- History.subproj/WebBackForwardList.m: (-[WebBackForwardList forwardListCount]): Added. (-[WebBackForwardList entryAtIndex:]): Return nil for out of range indices.
- 2:06 PM Changeset in webkit [3716] by
-
- 3 edits in trunk/WebCore
Fix for text-dec regression, 3185121.
Reviewed by john
- khtml/rendering/render_line.cpp: (shouldDrawDecoration):
- 3:15 AM Changeset in webkit [3715] by
-
- 5 edits in trunk/WebKit
WebKit:
Reviewed by Richard.
- WebCoreSupport.subproj/WebBridge.m: (-[WebBridge window]): Avoid calling removed call.
- WebView.subproj/WebView.m: Remove override of window method.
- WebView.subproj/WebWindowOperationsDelegate.h: Adjust for new API.
WebBrowser:
Reviewed by Richard.
Minimal implementation of new window operations delegate API.
- BrowserWebController.m: (-[BrowserWebController closeWindow]): (-[BrowserWebController focusWindow]): (-[BrowserWebController unfocusWindow]): (-[BrowserWebController firstResponderInWindow]): (-[BrowserWebController makeFirstResponderInWindow:]): (-[BrowserWebController isResizable]): (-[BrowserWebController setResizbale:]): (-[BrowserWebController setFrame:]): (-[BrowserWebController frame]):
Feb 27, 2003:
- 12:08 PM Changeset in webkit [3714]
-
- 3 copies in tags/Safari-64
This commit was manufactured by cvs2svn to create tag 'Safari-64'.
- 12:08 PM Changeset in webkit [3713] by
-
- 8 edits in trunk
needed to bump build # to 64
- 11:10 AM Changeset in webkit [3712] by
-
- 3 edits in trunk
starting 64 train
- 10:58 AM Changeset in webkit [3711]
-
- 3 copies in tags/Safari-63
This commit was manufactured by cvs2svn to create tag 'Safari-63'.
- 10:58 AM Changeset in webkit [3710] by
-
- 8 edits in trunk
63 stamp
Feb 26, 2003:
- 5:15 PM Changeset in webkit [3709] by
-
- 3 edits in trunk/JavaScriptCore
Reviewed by Darin.
- fixed 3156705 - REGRESSION: javascript menus improperly placed at umich.edu store
- kjs/nodes.cpp: (StatListNode::execute): If the first statement's completion is not normal, return immediately.
- 3:38 PM Changeset in webkit [3708] by
-
- 4 edits in trunk/WebCore
Additional cleanup. Don't need the arg to be a reference param
any more.
Reviewed by mjs
- khtml/rendering/render_object.cpp: (RenderObject::getTextDecorationColors):
- khtml/rendering/render_object.h:
- 3:22 PM Changeset in webkit [3707] by
-
- 11 edits in trunk
WebCore:
Reviewed by Dave.
- fixed reproducible hang at http://asp.eltonsoft.dk/cast/get.asp?cat=Quicktime
This was a set of mutually recursive frameset pages. This allows
the number of frames to grow huge, which kills both WebCore and
WebKit, so I added a hard limit of 200 total frames per page.
- khtml/html/html_baseimpl.cpp: (HTMLFrameElementImpl::isURLAllowed): (HTMLFrameElementImpl::attach): (HTMLFrameElementImpl::detach): (HTMLIFrameElementImpl::attach):
- khtml/html/html_baseimpl.h:
- khtml/khtml_part.cpp: (KHTMLPart::init): (KHTMLPart::incrementFrameCount): (KHTMLPart::decrementFrameCount): (KHTMLPart::topLevelFrameCount):
- khtml/khtml_part.h:
WebKit:
Reviewed by Dave.
- fixed reproducible hang at http://asp.eltonsoft.dk/cast/get.asp?cat=Quicktime
WebKit's processing time was O(N3) in the number of
frames. Improved it to O(N2) by storing frame pointer directly in
WebDataSource instead of linear scan. Could still be improved more.
- WebView.subproj/WebDataSource.m: (-[WebDataSource webFrame]):
- WebView.subproj/WebDataSourcePrivate.h:
- WebView.subproj/WebDataSourcePrivate.m: (-[WebDataSourcePrivate dealloc]): (-[WebDataSource _stopLoadingWithError:]): (-[WebDataSource _setWebFrame:]):
- WebView.subproj/WebFramePrivate.m: (-[WebFrame _detachFromParent]): (-[WebFrame _setDataSource:]): (-[WebFrame _transitionToCommitted:]): (-[WebFrame _isLoadComplete]): (-[WebFrame _clearProvisionalDataSource]): (-[WebFrame _continueLoadRequestAfterNavigationPolicy:formValues:]): (-[WebFrame _loadDataSource:withLoadType:formValues:]): (-[WebFrame _setProvisionalDataSource:]):
- 3:10 PM Changeset in webkit [3706] by
-
- 6 edits in trunk/WebCore
Fix numerous regressions with text-decoration in quirks mode and
also fixed a bug where text-decoration:none is not being honored
on links.
Reviewed by mjs
- khtml/css/cssstyleselector.cpp:
- khtml/rendering/render_object.cpp: (RenderObject::getTextDecorationColors):
- khtml/rendering/render_object.h:
- khtml/rendering/render_text.cpp: (TextRun::paintDecoration):
- 1:39 PM Changeset in webkit [3705] by
-
- 4 edits in trunk/WebCore
Fix for 3179109. containingBlock() had a big old bug in it.
For ABSOLUTE positioned elements, it would return inline relative
positioned parents (when it should only be returning blocks).
Reviewed by john
- khtml/rendering/render_object.cpp: (RenderObject::containingBlock):
- 12:59 PM Changeset in webkit [3704] by
-
- 8 edits in trunk/WebKit
Fixed 3102760. Removed WebDocumentDragSettings from API.
Reviewed by Chris.
- WebView.subproj/WebDocument.h:
- WebView.subproj/WebHTMLView.h:
- WebView.subproj/WebHTMLView.m:
- WebView.subproj/WebImageView.h:
- WebView.subproj/WebImageView.m: (-[WebImageView initWithFrame:]): (-[WebImageView mouseDragged:]):
- WebView.subproj/WebTextView.h:
- WebView.subproj/WebTextView.m: (-[WebTextView initWithFrame:]): (-[WebTextView layout]):
- 12:25 AM Changeset in webkit [3703] by
-
- 5 edits in trunk/WebCore
Fix for findNextLayer problems. There was nothing wrong with
findNextLayer per se... it was just getting called *way* more
often than it needed to be.
Fixes two bugs, 3159866 and 3168815.
Reviewed by darin
- khtml/rendering/render_container.cpp: (RenderContainer::appendChildNode): (RenderContainer::insertChildNode):
- khtml/rendering/render_object.cpp: (addLayers): (RenderObject::addLayers):
- khtml/rendering/render_object.h: