WebKit:
authorsullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Feb 2004 22:50:55 +0000 (22:50 +0000)
committersullivan <sullivan@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 27 Feb 2004 22:50:55 +0000 (22:50 +0000)
commit898f2c42fb217a71e6b162ca80b51388217fe139
tree2769ebe060ad7c4c42b3ee0acd75d8737414c4ac
parent7c2215cfa2ee6954e03c2cdb687e82c998896fd8
WebKit:

        - WebKit changes to allow performance improvements to bookmarks

        Reviewed by Darin.

        * History.subproj/WebHistoryItemPrivate.h:
        added notificationsSuppressed/setNotificationsSuppressed, and setURLString
        * History.subproj/WebHistoryItem.m:
        (-[WebHistoryItem setNotificationsSuppressed:]):
        setter for new flag. When this flag is set, making changes to the WebHistoryItem
        will not cause WebHistoryChanged notifications to be sent. This is a big speedup
        for reading bookmarks from disk, since currently each WebBookmarkLeaf object
        keeps around a WebHistoryItem object that isn't really part of history and thus
        doesn't need to send notifications about history changing.
        (-[WebHistoryItem notificationsSuppressed]):
        getter for new flag
        (-[WebHistoryItem setURLString:]):
        new method, extracted from guts of setURL:; this allows callers (though
        currently only callers at Apple) that have a URL string in hand to set
        it directly on the WebHistoryItem rather than converting to a URL and
        back, both relatively slow operations. Also, doesn't sent a notification
        if notifications are suppressed.
        (-[WebHistoryItem setURL:]):
        now calls extracted method
        (-[WebHistoryItem setAlternateTitle:]):
        doesn't send notification if notifications are suppressed
        (-[WebHistoryItem setOriginalURLString:]):
        ditto
        (-[WebHistoryItem setTitle:]):
        ditto
        (-[WebHistoryItem _setLastVisitedTimeInterval:]):
        ditto

WebBrowser:

        - A number of performance improvements to importing bookmarks. Some but not all of
        them also apply to reading our native bookmarks from disk. When I started this,
        importing bookmarks from Netscape's HTML format was actually slower than importing
        bookmarks from our property list format, hard though that might be to imagine. Now
        importing the HTML format takes about half the time it used to, and now it's about
        40% faster than importing the property list format, at least with my 33,000 bookmark
        sample file (and importing our property list format also sped up).

        Reviewed by Darin.

        * BookmarksController.m:
        (-[BookmarksController mergeBuiltInBookmarksIfNecessary]):
        added count to timing log message
        (-[BookmarksController exportBookmarks:]):
        added timing log message
        (-[BookmarksController importFavoritesFrom:intoBookmarksFolder:settingPrefKey:]):
        added count to timing log message, and commented-out calls to start & stop sampling
        for the next time someone works on this. Also, in the case where we're importing
        from a user-chosen file instead of automatically, bypass the merging code because
        the merging code is unnecessarily complicated for the "just shlurp this pile o'
        bookmarks into a new folder" case.

        * BookmarksViewController.m:
        (-[BookmarksViewController changeAddressForBookmark:to:]):
        Use bestURLStringForUserTypedString here (when user manually edits a URL in the
        outline view) so that we don't have to use it in the general case of setting
        a bookmark's URL string, since it's slow. When programmatically setting a bookmark's
        URL string we can often just use an existing string as-is.

        * FormCompletionController.m:
        (+[FormCompletionController _saveCompletionDB:]):
        Fix the way an #ifdef was declared so it compiles in a deployment build that
        has LOG_DISABLED set to 0.

        * WebBookmarkGroupPrivate.h:
        * WebBookmarkGroup.m:
        (-[WebBookmarkGroup _bookmarkChild:wasAddedToParent:]):
        added this private-ish helper method to avoid creating an array in the case
        where we aren't even going to use it because notifications are suppressed
        (-[WebBookmarkGroup _bookmarkChild:wasRemovedFromParent:]):
        ditto

        * WebBookmarkImporter.m:
        (-[WebBookmarkImporter unescapeHTML:]):
        bail out early if there's no ampersand at all in the string (the normal case), to avoid
        creating a mutable string

        * WebBookmarkLeaf.m:
        (-[WebBookmarkLeaf init]):
        suppress notifications on our private WebHistoryItem
        (-[WebBookmarkLeaf setURLString:]):
        call the new setURLString: method on our private WebHistoryItem instead of converting
        to a URL and then calling setURL: (which then converts back to a string)

        * WebBookmarkList.m:
        (-[WebBookmarkList removeChild:]):
        call new -[WebBookmarkGroup _bookmarkChild:wasRemovedFromParent:] so we don't have to
        create an NSArray here
        (-[WebBookmarkList insertChild:atIndex:]):
        call new -[WebBookmarkGroup _bookmarkChild:wasAddedToParent:] so we don't have to
        create an NSArray here

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@6128 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit/ChangeLog
WebKit/History.subproj/WebHistoryItem.m
WebKit/History.subproj/WebHistoryItemPrivate.h