Timeline
Aug 19, 2002:
- 7:53 PM Changeset in webkit [1875] by
-
- 4 edits in trunk/WebCore
- force-clean-timestamp: Richard's changes require a clean build.
- 7:11 PM Changeset in webkit [1874] by
-
- 8 edits in trunk/WebCore
QString rewrite. Much faster now.
QString has an inline rep, QStringData, which
has an inline character buffer. reps are
referenced indirectly via a handle. inline
reps are detached when necessary. Typical
stack based usage requires no allocations
for small string. Attempts are made to avoid
costly conversions between ascii and unicode.
Extensive diagnostics can be enable by
defining QSTRING_DEBUG_ALLOCATIONS and calling
_printQStringAllocationStatistics().
There appear to be a few small lingering leaks
that I need to track down.
- WebCore-tests.exp:
Added symbols for qstring-test.cpp.
- khtml/css/cssstyleselector.cpp:
Removed old string optimization hack.
- kwq/KWQString.mm:
Rewrite.
(_isOnStack):
(countInstance):
(allocatedBuffers):
(ALLOC_CHAR):
(REALLOC_CHAR):
(DELETE_CHAR):
(ALLOC_QCHAR):
(REALLOC_QCHAR):
(DELETE_QCHAR):
(_printQStringAllocationStatistics):
(ucstrcmp):
(ucstrncmp):
(ucstrnicmp):
(ok_in_base):
(QStringData::QStringData):
(QStringData::initialize):
(QStringData::operator new):
(QStringData::operator delete):
(QString::makeSharedNullHandle):
(QString::makeSharedNull):
(QStringData::~QStringData):
(QStringData::ascii):
(QStringData::increaseAsciiSize):
(QStringData::unicode):
(QStringData::increaseUnicodeSize):
(QStringData::makeAscii):
(QStringData::makeUnicode):
(QString::setBufferFromCFString):
(QString::fromStringWithEncoding):
(QString::fromCFMutableString):
(QString::fromCFString):
(QString::fromNSString):
(QString::getCFMutableString):
(QString::getNSString):
(QString::~QString):
(QString::QString):
(QString::operator=):
(QString::at):
(QString::unicode):
(QString::compare):
(QString::startsWith):
(QString::endsWith):
(QString::latin1):
(QString::isNull):
(QString::find):
(QString::findRev):
(QString::contains):
(QString::toShort):
(QString::toUShort):
(QString::toInt):
(QString::toUInt):
(QString::toLong):
(QString::toULong):
(QString::toDouble):
(QString::findArg):
(QString::arg):
(QString::left):
(QString::right):
(QString::mid):
(QString::copy):
(QString::lower):
(QString::stripWhiteSpace):
(QString::simplifyWhiteSpace):
(QString::deref):
(QString::setUnicode):
(QString::setLatin1):
(QString::sprintf):
(QString::append):
(QString::insert):
(QString::detachInternal):
(QString::detach):
(QString::remove):
(QString::replace):
(QString::forceUnicode):
(QString::setLength):
(QString::truncate):
(QString::fill):
(QString::operator+=):
(QString::convertToQCString):
(operator==):
(QConstString::QConstString):
(QConstString::~QConstString):
(_initializeHandleNodeBlock):
(_allocatePageNode):
(_initializeHandleNodes):
(_allocateNode):
(allocateHandle):
(freeHandle):
- kwq/qt/qstring.h: Rewrite
- 2:59 PM Changeset in webkit [1873] by
-
- 6 edits1 add in trunk/WebCore
- Makefile.am: Added new mechanism to clean only the objects that depend on JavaScript.
- force-js-clean-timestamp: Touched since I changed JSC just now.
- .cvsignore: Ignore previous-js-clean-timestamp.
- 2:54 PM Changeset in webkit [1872] by
-
- 4 edits in trunk/WebCore
Fixed tab cycle on slashdot.org and elsewhere by being stricter about what is
included in the tab cycle.
- kwq/KWQWidget.mm: (QWidget::focusPolicy): Use the same rule as AppKit.
- 2:36 PM Changeset in webkit [1871] by
-
- 5 edits in trunk/WebCore
Tweak baselines to look a little better for form controls.
This will be redone by Darin to really baseline align... this
is just temporary.
Also adding 3px margins to <input> and <textarea> and <select>.
- khtml/css/html4.css:
- khtml/rendering/render_form.cpp: (RenderButton::baselinePosition): (RenderSelect::baselinePosition):
- 2:29 PM Changeset in webkit [1870] by
-
- 5 edits in trunk/WebCore
- fixed 3027791 -- Crash when pressing "tab" after going to http://slashdot.org/
- kwq/KWQKHTMLPartImpl.mm: (KWQKHTMLPartImpl::nextKeyViewInFrame): Add null check.
- 2:14 PM Changeset in webkit [1869] by
-
- 5 edits in trunk/JavaScriptCore
Fixed the bug that made sony.com menus come out wrong and made
aa.com crash (Radar 3027762).
Mode most methods inline.
- kjs/completion.cpp:
- kjs/completion.h:
- 1:46 PM Changeset in webkit [1868] by
-
- 3 edits in trunk/WebKit
Fixed 3025019: "only-if-cached" attribute fetches data from network if cached but expired
- Misc.subproj/WebIconLoader.m: (-[WebIconLoader iconFromCache]):
- 1:11 PM Changeset in webkit [1867] by
-
- 8 edits in trunk/WebCore
Put in more robust version of the next/previous key view checking
that matches what I did in WebHTMLView.
- kwq/KWQNSTextField.h: Add inNextValidKeyView instance variable.
- kwq/KWQNSTextField.mm: (-[KWQNSTextField dealloc]): No need to nil out widget. (-[KWQNSTextField nextKeyView]): Only do the computation when called from nextValidKeyView. (-[KWQNSTextField previousKeyView]): Only do the computation when called from previousValidKeyView. (-[KWQNSTextField nextValidKeyView]): Set boolean. (-[KWQNSTextField previousValidKeyView]): Set boolean. (-[KWQSecureTextField nextKeyView]): Only do the computation when called from nextValidKeyView. (-[KWQSecureTextField previousKeyView]): Only do the computation when called from nextValidKeyView. (-[KWQSecureTextField nextValidKeyView]): Set boolean. (-[KWQSecureTextField previousValidKeyView]): Set boolean.
Unrelated change.
- kwq/mac-encodings.txt: Add an encoding name of gb18030, since I saw mention of it in bug 3002016.
- 11:59 AM Changeset in webkit [1866] by
-
- 11 edits in trunk
WebCore:
Support so that WebKit can tab into a web view's fields.
- kwq/KWQKHTMLPartImpl.h: Made another nextKeyView() version public.
- kwq/WebCoreBridge.h: Add new methods, change parameters to one existing one.
- kwq/WebCoreBridge.mm: (-[WebCoreBridge createKHTMLViewWithNSView:marginWidth:marginHeight:]): Remove width and height parameters. The passed-in view already has the correct width and height. (-[WebCoreBridge nextKeyView]): Call nextKeyView() with node == 0. (-[WebCoreBridge previousKeyView]): Call nextKeyView() with node == 0.
WebKit:
- fixed 2863025 -- Need to implement TABing between widgets in forms
Implemented tabbing into a web view's fields. I now consider the task of
tabbing between widgets done. But there are many loose ends, each with its
own bug report.
- WebView.subproj/WebHTMLView.m: (-[WebHTMLView dealloc]): Set _private to nil so we can properly handle calls that come from NSView dealloc. (-[WebHTMLView provisionalDataSourceChanged:]): No need to pass width and height to createKHTMLViewWithNSView any more. Also, just pass self rather than making the roung trip to the WebFrame and the WebView back here. (-[WebHTMLView nextKeyView]): Added. Calls the bridge version when we are called from nextValidKeyView, the normal version the rest of the time. (-[WebHTMLView previousKeyView]): Added. Calls the bridge version when we are called from nextValidKeyView, the normal version the rest of the time. (-[WebHTMLView nextValidKeyView]): Set inNextValidKeyView and call super. (-[WebHTMLView previousValidKeyView]): Set inNextValidKeyView and call super.
- WebView.subproj/WebHTMLViewPrivate.h: Add inNextValidKeyView flag.
- 9:53 AM Changeset in webkit [1865] by
-
- 61 edits3 deletes in trunk/WebCore
First cut at implementation of "tab to change focus": Lots of loose ends, but it's
going well.
- kwq/KWQNSTextField.h: Change initWithWidget to initWithQLineEdit.
- kwq/KWQNSTextField.mm: (-[KWQNSTextField initWithQLineEdit:]): Keep a QLineEdit pointer so we don't cast later. (-[KWQNSTextField dealloc]): Sets widget to 0 to make nextKeyView and previousKeyView return nil while deallocating. (-[KWQNSTextField setPasswordMode:]): Pass widget when creating secure text field so it can handle the next/previous links properly. (-[KWQNSTextField nextKeyView]): Added. Calls KWQKHTMLPartImpl::nextKeyView. (-[KWQNSTextField previousKeyView]): Added. Calls KWQKHTMLPartImpl::nextKeyView. (-[KWQTextFieldCell isOpaque]): Added. Returns NO; fixes focus rectangle updating. (-[KWQSecureTextField initWithQWidget:]): Added. (-[KWQSecureTextField dealloc]): Added. Sets widget to 0 to make nextKeyView and previousKeyView return nil while deallocating. (-[KWQSecureTextField nextKeyView]): Added. Calls KWQKHTMLPartImpl::nextKeyView. (-[KWQSecureTextField previousKeyView]): Added. Calls KWQKHTMLPartImpl::nextKeyView.
- kwq/KWQKHTMLPartImpl.h: Add KWQSelectionDirection. Change name of getBridge() to bridge(), getDocument() to document(), getRenderer() to renderer(), getBridgeForFrameName() to bridgeForFrameName(). Also added nextKeyView family of member functions.
- kwq/KWQKHTMLPartImpl.mm: (KWQKHTMLPartImpl::nextKeyViewInFrame): Added. (KWQKHTMLPartImpl::nextKeyView): Added.
- kwq/qt/qwidget.h: Remove unneeded parameters from constructor. Also added a constructor that takes an NSView.
- kwq/KWQWidget.mm: (QWidget::QWidget): Don't store focus policy (it was uninitialized before). (QWidget::focusPolicy): Return TabFocus for any widget that has a view with a first responder, NoFocus for any other. (QWidget::setFocusPolicy): Do nothing. (QWidget::setFocusProxy): Do nothing.
- kwq/qt/qobject.h: Store the event filter object when installEventFilter is called. This is used to find the RenderWidget for a QWidget by the new tabbing code.
- kwq/KWQObject.mm: Removed event-filter functions. Two are now inlines, one deleted.
Other changes related to KWQKHTMLPartImpl improvements.
- kwq/KWQKHTMLPartBrowserExtension.mm:
- kwq/KWQKHTMLPartImpl.mm:
- kwq/KWQLoaderImpl.mm:
- kwq/WebCoreBridge.mm: Update for KWQKHTMLPartImpl member name changes.
Various improvements for other widget implementations.
- kwq/qt/qbutton.h:
- kwq/KWQButton.mm: Stop using KWQNSButton. Instead just use a button adapter object, and a plain old NSButton. (QButton::QButton): Put all the NSButton setup in here. (QButton::~QButton): Release the adapter here. (QButton::clicked): Move this in here because it's virtual now so that QCheckBox can override it. (-[KWQButtonAdapter initWithQButton:]): Added. (-[KWQButtonAdapter action:]): Just call clicked().
- kwq/qt/qpushbutton.h: Don't pass unused parent pointer to QButton constructor.
- kwq/KWQPushButton.mm: (QPushButton::QPushButton): Don't pass unused parent pointer to QButton contructor.
- kwq/qt/qcheckbox.h:
- kwq/KWQCheckBox.mm: Just use NSButton, not KWQNSButton. (QCheckBox::clicked): Move the state-changed logic here; used to be in KWQNSButton.
- kwq/KWQRadioButton.mm: (QRadioButton::QRadioButton): Don't pass unused parent pointer to QButton contructor.
- kwq/qt/qcombobox.h:
- kwq/KWQComboBox.mm: (QComboBox::QComboBox): Removed extra constructor. Make a plain NSPopUpButton, and use an adapter object, rather than having a KWQNSComboBox. (QComboBox::~QComboBox): Release the adapter. (QComboBox::insertItem): New implementation. No need to keep an items array around, because the menu does that just fine. (QComboBox::clear): Remove the items from the pop-up button directly. (-[KWQComboBoxAdapter initWithQComboBox:]): Added. (-[KWQComboBoxAdapter action:]): Just call activated().
- kwq/kdeui/kcombobox.h: Empty this out and make it use only inlines.
- khtml/rendering/render_form.cpp: (RenderSelect::updateFromElement): Remove the setSize()/doneLoading() optimization for QComboBox because the new simpler QComboBox implementation obviates the speed problem this was originally intended to fix.
- kwq/qt/qlineedit.h:
- kwq/KWQLineEdit.mm: (QLineEdit::QLineEdit): Call initWithQLineEdit instead of initWithWidget. Also don't take an unused parent pointer parameter.
- kwq/kdeui/klineedit.h: Empty this out and make it use only inlines.
- kwq/qt/qframe.h: Remove unused parent pointer from constructor.
- kwq/KWQFrame.mm: Remove unneeded constructor.
- kwq/KWQHBox.mm: (QHBox::QHBox): Don't pass unused parent pointer to QFrame.
- kwq/KWQLabel.mm: (QLabel::QLabel): Don't pass unused parent pointer to QFrame.
- kwq/qt/qscrollview.h: Make constructor inline.
- kwq/KWQScrollView.mm: Remove unneeded constructor.
- kwq/KWQWindowWidget.h: Remove unneeded constructor.
- WebCore.pbproj/project.pbxproj: Remove KWQKComboBox.mm, KWQKLineEdit.mm, and KWQScrollBar.h.
- kwq/KWQKComboBox.mm: Removed.
- kwq/KWQKLineEdit.mm: Removed.
- kwq/KWQScrollBar.h: Removed. Unused.
- kwq/KWQTextArea.h: Change initWithWidget to initWithQTextEdit.
- kwq/KWQTextArea.mm: (-[KWQTextArea initWithQTextEdit:]): Changed name.
- kwq/KWQTextEdit.mm: (QTextEdit::QTextEdit): Call initWithQTextEdit instead of initWithWidget.
- kwq/KWQView.h: Eliminated KWQNSButton, KWQNSComboBox, and KWQNSScrollView.
- kwq/KWQView.mm: Ditto.
Housekeeping.
- force-clean-timestamp: Yes, again.
- khtml/khtml_part.h: Rearrange APPLE_CHANGES a bit.
- kwq/qt/qvaluelist.h: Added -- as well as ++ for the const iterator, and fixed some minor const issues. At one point I needed this for the focus changes, but not any more.
- 1:54 AM Changeset in webkit [1864] by
-
- 5 edits in trunk/JavaScriptCore
Maintain stack of old "arguments" property values for functions
implicitly on the system stack instead of explicitly in the
FunctionImp. This eliminates only a trivial number of GC
allocations (less than 200) but eliminates one of the two cases
where a ListImp * is stored directly, paving the way to separate
List from Value.
- kjs/function.h: Remove argStack, pushArgs and popArgs.
- kjs/function.cpp: (FunctionImp::FunctionImp): Don't initalize argStack. (FunctionImp::~FunctionImp): Remove comment about argStack. (FunctionImp::mark): Don't mark the argStack. (FunctionImp::call): Save old "arguments" property in a Value, where it will be GC-protected, rather than keeping a list, and restore the old value when done executing.
Aug 18, 2002:
- 5:31 PM Changeset in webkit [1863] by
-
- 4 edits in trunk/JavaScriptCore
- kjs/internal.cpp: (KJS::printInfo): Remove one more CompletionType that Maciej missed.
- 5:20 PM Changeset in webkit [1862] by
-
- 15 edits in trunk/WebKit
WebFoundation:
Step 5 of adding user-agent API.
Add API to pass user agent into WebFoundation when creating a WebResourceHandle,
or to compute the user agent for each URL in a WebResourceClient method.
Also renamed the WebResourceClient methods to be more like delegate methods in AppKit.
- CacheLoader.subproj/WebHTTPResourceLoader.m: (-[WebHTTPProtocolHandler addUserAgentHeader:]): Treat nil for user agent as "no user-agent header". (-[WebHTTPProtocolHandler createWFLoadRequest]): Treat nil for user agent as "no user-agent header".
- CacheLoader.subproj/WebResourceCallbackClient.m: Updated methods for new names. Added nil-returning handleWillUseUserAgent:forURL:.
- CacheLoader.subproj/WebResourceClient.h: New names.
- CacheLoader.subproj/WebResourceHandle.h: Added userAgent parameter to init function.
- CacheLoader.subproj/WebResourceHandle.m: Updated method for new names. (-[WebResourceHandleInstanceVariables dealloc]): Store originalUserAgent so we don't ask the handle twice about that same URL. Could do a bit more of this if needed. (-[WebResourceHandle _originalCanonicalURL]): Renamed canonicalURL to this for clarity. (-[WebResourceHandle _originalUserAgent]): Added. (-[WebResourceHandle _userAgentForURL:]): Made this actually call handleWillUseUserAgent:forURL:. Now we have no hard-coded user-agent string in WebFoundation at all.
- CacheLoader.subproj/WebResourceHandlePrivate.h: Added _originalUserAgent.
- CacheLoader.subproj/WebResourceLoad.h: Added userAgent, originalUserAgent.
- CacheLoader.subproj/WebResourceLoad.m: (-[WebResourceLoad userAgent]): Return this rather than recomputing it. (-[WebResourceLoad dealloc]): Release this. (-[WebResourceLoad _originalUserAgent]): Return this rather than recomputing it. (-[WebResourceLoad didRedirectToURL:cacheRedirect:]): Store userAgent when we update URL. (-[WebResourceLoad _cacheKey]): Allow userAgent of nil.
- CacheLoader.subproj/WebResourceLoadManager.m: (+[WebResourceLoadKey keyWithHandle:]): Allow userAgent of nil, and get it, don't compute it. (-[WebResourceLoadKey isEqual:]): Handle userAgent of nil properly.
WebKit:
Update WebResourceClient instances for new API, including adding
the handleWillUseUserAgent:forURL: method.
- Misc.subproj/WebIconLoader.m:
- Plugins.subproj/WebPluginStream.m:
- WebCoreSupport.subproj/WebSubresourceClient.m:
- WebView.subproj/WebMainResourceClient.m: These were all the clients that needed updating.
- WebView.subproj/WebController.m: (-[WebController setUserAgent:]): Lock so that we can set the user agent even though another thread could be calling userAgentForURL:. (-[WebController userAgentForURL:]): Ditto.
- WebView.subproj/WebControllerPrivate.h: Add lock.
- WebView.subproj/WebControllerPrivate.m: (-[WebControllerPrivate init]): Create lock. (-[WebControllerPrivate dealloc]): Release lock.
- WebView.subproj/WebDataSourcePrivate.m: (-[WebDataSource _stopLoading]): Improve comment.
- 5:11 PM Changeset in webkit [1861] by
-
- 6 edits in trunk/JavaScriptCore
Remove stray references to CompletionType and CompletionImp.
- kjs/completion.h:
- kjs/object.cpp:
- kjs/value.h:
- 3:57 PM Changeset in webkit [1860] by
-
- 3 edits in trunk/WebKit
- Misc.subproj/WebIconLoader.m: (-[WebIconLoader iconFromCache]): (-[WebIconLoader WebResourceHandleDidFinishLoading:data:]): Don't process each icon twice. We need to have the loader as a client even for the synchronous case because of the user agent issue, but that causes double work.
- 12:21 AM Changeset in webkit [1859] by
-
- 9 edits2 adds in trunk/JavaScriptCore
Separated Completion from Value and made it a pure stack
object. This removed another 160,000 of the remaining 580,000
garbage collected object allocations.
6% speed increas on cvs-js-performance test.
- kjs/completion.cpp: Added. New implementation that doesn't require a ValueImp *. (Completion::Completion): (Completion::complType): (Completion::value): (Completion::target): (Completion::isValueCompletion):
- kjs/completion.h: Added.
- kjs/function.cpp: (GlobalFuncImp::call): Removed some (apparently mistaken) uses of Completion as a Value.
- kjs/internal.cpp:
- kjs/internal.h:
- kjs/types.cpp: Removed Completion stuff.
- kjs/types.h: Removed Completion stuff.
- JavaScriptCore.pbproj/project.pbxproj: Added new header.