Changeset 86694 in webkit
- Timestamp:
- May 17, 2011 12:00:51 PM (13 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r86692 r86694 1 2011-05-17 Andreas Kling <kling@webkit.org> 2 3 Reviewed by Kenneth Rohde Christiansen. 4 5 [Qt][WK2] Initial support for favicons. 6 https://bugs.webkit.org/show_bug.cgi?id=58937 7 8 Add the following API to QWKContext: 9 10 - void setIconDatabasePath(QString) 11 - void iconChangedForPageURL(QUrl) [signal] 12 - QIcon iconForPageURL(QUrl) 13 14 This is mostly analogous to the QWebSettings/QWebFrame icon API we had in WebKit1. 15 16 * UIProcess/API/qt/ClientImpl.h: Added WKIconDatabaseClient methods. 17 18 * UIProcess/API/qt/ClientImpl.cpp: 19 (toQWKContext): Helper to cast from "void* clientInfo" to a QWKContext*. 20 (qt_wk_didChangeIconForPageURL): Emits QWKContext::iconChangedForPageURL(QUrl). 21 (qt_wk_didRemoveAllIcons): Stub. 22 23 * UIProcess/API/qt/qwkcontext.h: 24 * UIProcess/API/qt/qwkcontext_p.h: 25 * UIProcess/API/qt/qwkcontext.cpp: 26 (QWKContextPrivate::QWKContextPrivate): Set up and register a WKIconDatabaseClient. 27 (QWKContext::QWKContext): Minor refactor to avoid code duplication in constructors. 28 (QWKContext::setIconDatabasePath): Exactly what it sounds like. 29 (QWKContext::iconForPageURL): Retrieves the favicon for a given page URL as a QIcon. 30 31 * WebKit2API.pri: Add WKIconDatabase.cpp and WKIconDatabase.h to build. 32 1 33 2011-05-17 Brady Eidson <beidson@apple.com> 2 34 -
trunk/Source/WebKit2/UIProcess/API/qt/ClientImpl.cpp
r84539 r86694 25 25 #include "WKStringQt.h" 26 26 #include "WKURLQt.h" 27 #include <qwkcontext.h> 27 28 #include <qwkpage.h> 28 29 #include <qwkpage_p.h> … … 32 33 using namespace WebKit; 33 34 35 static QWKContext* toQWKContext(const void* clientInfo) 36 { 37 if (clientInfo) 38 return reinterpret_cast<QWKContext*>(const_cast<void*>(clientInfo)); 39 return 0; 40 } 41 34 42 static QWKPage* toQWKPage(const void* clientInfo) 35 43 { … … 189 197 QWKPagePrivate::get(toQWKPage(clientInfo))->updateNavigationActions(); 190 198 } 199 200 void qt_wk_didChangeIconForPageURL(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo) 201 { 202 QUrl qUrl = WKURLCopyQUrl(pageURL); 203 emit toQWKContext(clientInfo)->iconChangedForPageURL(qUrl); 204 } 205 206 void qt_wk_didRemoveAllIcons(WKIconDatabaseRef iconDatabase, const void* clientInfo) 207 { 208 } -
trunk/Source/WebKit2/UIProcess/API/qt/ClientImpl.h
r84539 r86694 54 54 void qt_wk_setStatusText(WKPageRef page, WKStringRef text, const void *clientInfo); 55 55 56 // IconDatabase client. 57 void qt_wk_didChangeIconForPageURL(WKIconDatabaseRef, WKURLRef, const void* clientInfo); 58 void qt_wk_didRemoveAllIcons(WKIconDatabaseRef, const void* clientInfo); 59 56 60 #ifdef __cplusplus 57 61 } -
trunk/Source/WebKit2/UIProcess/API/qt/qwkcontext.cpp
r76916 r86694 23 23 #include "qwkcontext_p.h" 24 24 25 #include "ClientImpl.h" 26 #include "IconDatabase.h" 27 #include <QDir> 28 #include <QPixmap> 29 #include <QUrl> 30 #include "WebIconDatabase.h" 25 31 #include "WebPlatformStrategies.h" 32 #include "WKIconDatabase.h" 26 33 27 34 using namespace WebKit; … … 37 44 } 38 45 39 QWKContextPrivate::QWKContextPrivate(QWKContext* qq )46 QWKContextPrivate::QWKContextPrivate(QWKContext* qq, WebContext* webContext) 40 47 : q(qq) 41 48 { 49 if (!webContext) 50 context = WebContext::create(String()); 51 else 52 context = webContext; 53 42 54 initializePlatformStrategiesIfNeeded(); 55 56 WKIconDatabaseClient iconDatabaseClient = { 57 0, // version 58 qq, // clientInfo 59 qt_wk_didChangeIconForPageURL, 60 qt_wk_didRemoveAllIcons 61 }; 62 63 WKIconDatabaseSetIconDatabaseClient(toAPI(context->iconDatabase()), &iconDatabaseClient); 43 64 } 44 65 45 66 QWKContextPrivate::~QWKContextPrivate() 46 { 47 } 67 { } 48 68 49 69 QWKContext::QWKContext(QObject* parent) 50 70 : QObject(parent) 51 71 , d(new QWKContextPrivate(this)) 52 { 53 d->context = WebContext::create(String()); 54 } 72 { } 55 73 56 74 QWKContext::QWKContext(WKContextRef contextRef, QObject* parent) 57 75 : QObject(parent) 58 , d(new QWKContextPrivate(this)) 59 { 60 d->context = toImpl(contextRef); 61 } 76 , d(new QWKContextPrivate(this, toImpl(contextRef))) 77 { } 62 78 63 79 QWKContext::~QWKContext() … … 66 82 } 67 83 84 void QWKContext::setIconDatabasePath(const QString& path) 85 { 86 // FIXME: There is currently no way to disable the icon database once it's enabled. 87 QFileInfo info(path); 88 if (info.isDir() && info.isWritable()) { 89 QString databasePath = path + QDir::separator() + QString(WebCore::IconDatabase::defaultDatabaseFilename()); 90 d->context->setIconDatabasePath(databasePath); 91 } 92 } 93 94 QIcon QWKContext::iconForPageURL(const QUrl& pageURL) const 95 { 96 RefPtr<WebCore::Image> image = d->context->iconDatabase()->imageForPageURL(pageURL.toString()); 97 if (!image) 98 return QIcon(); 99 100 QPixmap* nativeImage = image->nativeImageForCurrentFrame(); 101 if (!nativeImage) 102 return QIcon(); 103 104 return QIcon(*nativeImage); 105 } 106 68 107 #include "moc_qwkcontext.cpp" -
trunk/Source/WebKit2/UIProcess/API/qt/qwkcontext.h
r73976 r86694 25 25 #include <WebKit2/WKContext.h> 26 26 27 class QIcon; 28 class QUrl; 27 29 class QWKContextPrivate; 28 30 … … 36 38 QWKContext(WKContextRef contextRef, QObject* parent = 0); 37 39 40 void setIconDatabasePath(const QString&); 41 QIcon iconForPageURL(const QUrl&) const; 42 43 public: 44 Q_SIGNAL void iconChangedForPageURL(const QUrl&); 45 38 46 private: 39 47 QWKContextPrivate* d; -
trunk/Source/WebKit2/UIProcess/API/qt/qwkcontext_p.h
r73986 r86694 27 27 class QWKContextPrivate { 28 28 public: 29 QWKContextPrivate(QWKContext* );29 QWKContextPrivate(QWKContext*, WebKit::WebContext* = 0); 30 30 ~QWKContextPrivate(); 31 31 -
trunk/Source/WebKit2/WebKit2API.pri
r83842 r86694 32 32 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKGeolocationPermissionRequest.cpp \ 33 33 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKGeolocationPosition.cpp \ 34 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKIconDatabase.cpp \ 34 35 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKInspector.cpp \ 35 36 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKOpenPanelParameters.cpp \ … … 104 105 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKGeolocationPermissionRequest.h \ 105 106 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKGeolocationPosition.h \ 107 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKIconDatabase.h \ 106 108 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKInspector.h \ 107 109 $$SOURCE_DIR/WebKit2/UIProcess/API/C/WKOpenPanelParameters.h \
Note: See TracChangeset
for help on using the changeset viewer.