Skip to content
Commit 82fa973d authored by beidson@apple.com's avatar beidson@apple.com
Browse files
WK2 Icon DB: Expand IconDatabaseClient interface and move it to the main thread

Reviewed by Sam Weinig.

../WebCore: 

* loader/icon/IconDatabase.cpp:
Add a dummy client implementation for non-Mac, non-Win ports:
(WebCore::DefaultIconDatabaseClient::performImport):
(WebCore::DefaultIconDatabaseClient::didImportIconURLForPageURL):
(WebCore::DefaultIconDatabaseClient::didImportIconDataForPageURL):
(WebCore::DefaultIconDatabaseClient::didChangeIconForPageURL):
(WebCore::DefaultIconDatabaseClient::didRemoveAllIcons):
(WebCore::DefaultIconDatabaseClient::didFinishURLImport):
(WebCore::defaultClient):

Either call the client directly when on the main thread, or use the dispatch functions below
if on the background thread:
(WebCore::IconDatabase::setIconDataForIconURL):
(WebCore::IconDatabase::setIconURLForPageURL):
(WebCore::IconDatabase::performURLImport):
(WebCore::IconDatabase::readFromDatabase):
(WebCore::IconDatabase::removeAllIconsOnThread):

Add a very targeted WorkItem interface for dispatching client calls on the main thread:
(WebCore::ClientWorkItem::ClientWorkItem):
(WebCore::ClientWorkItem::~ClientWorkItem):
(WebCore::ImportedIconURLForPageURLWorkItem::ImportedIconURLForPageURLWorkItem):
(WebCore::ImportedIconURLForPageURLWorkItem::~ImportedIconURLForPageURLWorkItem):
(WebCore::ImportedIconURLForPageURLWorkItem::performWork):
(WebCore::ImportedIconDataForPageURLWorkItem::ImportedIconDataForPageURLWorkItem):
(WebCore::ImportedIconDataForPageURLWorkItem::~ImportedIconDataForPageURLWorkItem):
(WebCore::ImportedIconDataForPageURLWorkItem::performWork):
(WebCore::RemovedAllIconsWorkItem::RemovedAllIconsWorkItem):
(WebCore::RemovedAllIconsWorkItem::performWork):
(WebCore::performWorkItem):

Use the client WorkItem interface to perform these callbacks on the main thread:
(WebCore::IconDatabase::dispatchDidImportIconURLForPageURLOnMainThread):
(WebCore::IconDatabase::dispatchDidImportIconDataForPageURLOnMainThread):
(WebCore::IconDatabase::dispatchDidRemoveAllIconsOnMainThread):
* loader/icon/IconDatabase.h:
* loader/icon/IconDatabaseClient.h:

../WebKit/mac: 

Note that while the new client calls always come through on the main thread, our mechanisms to
route dispatches to the main thread are still valid and will still work.

Update to the new IconDatabaseClient interface:
* WebCoreSupport/WebIconDatabaseClient.h:
* WebCoreSupport/WebIconDatabaseClient.mm:
(WebIconDatabaseClient::didRemoveAllIcons):
(WebIconDatabaseClient::didImportIconURLForPageURL):
(WebIconDatabaseClient::didImportIconDataForPageURL):
(WebIconDatabaseClient::didChangeIconForPageURL):
(WebIconDatabaseClient::didFinishURLImport):

../WebKit/win: 

Note that while the new client calls always come through on the main thread, our mechanisms to
route dispatches to the main thread are still valid and will still work.

Update to the new IconDatabaseClient interface:
* WebIconDatabase.cpp:
(WebIconDatabase::performImport):
(WebIconDatabase::didRemoveAllIcons):
(WebIconDatabase::didImportIconURLForPageURL):
(WebIconDatabase::didImportIconDataForPageURL):
(WebIconDatabase::didChangeIconForPageURL):
(WebIconDatabase::didFinishURLImport):
* WebIconDatabase.h:



git-svn-id: svn://svn.chromium.org/blink/trunk@81719 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent c76793a6
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment