diff options
author | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-05 19:02:31 +0100 |
---|---|---|
committer | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-05 19:02:31 +0100 |
commit | bbf5d657eeb376b0bfaec73493734117ec2b6ce0 (patch) | |
tree | b8d592b62baf27bab05ccf5b1e9ff8fbde563456 | |
parent | 3dd286e11a433ad9b0ca1d95f22d6447744e8911 (diff) | |
download | browser-poc-bbf5d657eeb376b0bfaec73493734117ec2b6ce0.tar.gz |
Implemented getFavicon
-rw-r--r-- | browser/browserview.cpp | 19 | ||||
-rw-r--r-- | browser/browserview.h | 3 | ||||
-rw-r--r-- | browser/unit-tests/browserdbus/testbrowserdbus.cpp | 8 | ||||
-rw-r--r-- | browser/unit-tests/browserdbus/testbrowserdbus.h | 1 | ||||
-rw-r--r-- | browser/unit-tests/browserview/testbrowser.cpp | 14 | ||||
-rw-r--r-- | browser/unit-tests/browserview/testbrowser.h | 1 | ||||
-rw-r--r-- | browser/webpagewindow.cpp | 7 | ||||
-rw-r--r-- | common/browserdbus.cpp | 16 | ||||
-rw-r--r-- | common/browserdbus.h | 1 |
9 files changed, 63 insertions, 7 deletions
diff --git a/browser/browserview.cpp b/browser/browserview.cpp index 163832b..9d4b359 100644 --- a/browser/browserview.cpp +++ b/browser/browserview.cpp @@ -17,6 +17,7 @@ #include <QCoreApplication> #include <QTemporaryFile> #include <QSemaphore> +#include <QWebSettings> #include "browserview.h" #include "../common/browserdefs.h" @@ -223,3 +224,21 @@ QString BrowserView::createScreenshot(QString url) { outFile.close(); return outFile.fileName(); } + +QString BrowserView::getFaviconFilePath(QString url) { + + QIcon icon = QWebSettings::globalSettings()->iconForUrl(QUrl(url)); + if (icon.isNull()) + return ""; + + QImage image = icon.pixmap(15).toImage(); + + QTemporaryFile outFile("XXXXXX.png"); + outFile.setAutoRemove(false); + outFile.open(); + + image.save(&outFile, "PNG"); + outFile.close(); + + return outFile.fileName(); +} diff --git a/browser/browserview.h b/browser/browserview.h index b889628..bcd45e5 100644 --- a/browser/browserview.h +++ b/browser/browserview.h @@ -76,7 +76,8 @@ public: double getZoomFactor(); void getScrollPosition(uint&, uint&); void setScrollPosition(uint, uint); - static QString createScreenshot(QString url); + QString createScreenshot(QString url); + QString getFaviconFilePath(QString url); signals: void pageLoadStarted(); diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.cpp b/browser/unit-tests/browserdbus/testbrowserdbus.cpp index 3490c10..f6aef6c 100644 --- a/browser/unit-tests/browserdbus/testbrowserdbus.cpp +++ b/browser/unit-tests/browserdbus/testbrowserdbus.cpp @@ -186,4 +186,12 @@ void TestBrowserDBus::testCanGeneratePageIcon() { QVERIFY(iconPath.compare(QString("")) != 0); } +void TestBrowserDBus::testCanGetFavicon() { + m_bdb->loadurl(testFileUrl()); + QTest::qSleep(300); + QString iconPath = m_bdb->getFavicon(testFileUrl()); + qDebug() << iconPath; + QVERIFY(iconPath.compare(QString("")) != 0); +} + QTEST_MAIN (TestBrowserDBus); diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.h b/browser/unit-tests/browserdbus/testbrowserdbus.h index 8702923..af66c31 100644 --- a/browser/unit-tests/browserdbus/testbrowserdbus.h +++ b/browser/unit-tests/browserdbus/testbrowserdbus.h @@ -35,6 +35,7 @@ private slots: void testCanSetAndGetZoomFactor(); void testCanSetAndGetScrollPosition(); void testCanGeneratePageIcon(); + void testCanGetFavicon(); private: QString testFileUrl() { diff --git a/browser/unit-tests/browserview/testbrowser.cpp b/browser/unit-tests/browserview/testbrowser.cpp index b273683..a5b3a59 100644 --- a/browser/unit-tests/browserview/testbrowser.cpp +++ b/browser/unit-tests/browserview/testbrowser.cpp @@ -179,11 +179,15 @@ void TestBrowser::testGetUrl() void TestBrowser::testCanCreateScreenshot() { BrowserView bvi; bvi.show(); - { - QSignalSpy spy (&bvi, SIGNAL(pageLoadFinished(bool))); - spy.wait(1000); - } - QString fileName = bvi.createScreenshot(); + QString fileName = bvi.createScreenshot("http://pelagicore.com"); + QVERIFY(QFileInfo(fileName).size() > 0); +} + +void TestBrowser::testCanGetFavicon () { + BrowserView bvi; + bvi.show(); + QString fileName = bvi.getFaviconFilePath("http://www.bmw.com"); + qDebug() << fileName; QVERIFY(QFileInfo(fileName).size() > 0); } diff --git a/browser/unit-tests/browserview/testbrowser.h b/browser/unit-tests/browserview/testbrowser.h index c080273..225edaf 100644 --- a/browser/unit-tests/browserview/testbrowser.h +++ b/browser/unit-tests/browserview/testbrowser.h @@ -15,4 +15,5 @@ private slots: void testGetTitle(); void testGetUrl(); void testCanCreateScreenshot(); + void testCanGetFavicon(); }; diff --git a/browser/webpagewindow.cpp b/browser/webpagewindow.cpp index ecc70fb..73e4e02 100644 --- a/browser/webpagewindow.cpp +++ b/browser/webpagewindow.cpp @@ -234,5 +234,10 @@ conn::brw::ERROR_IDS webpagewindow::setScrollPosition(uint &x, uint &y) { return conn::brw::EID_NO_ERROR; } -conn::brw::ERROR_IDS webpagewindow::getFavicon(const QString&, QString&) { +conn::brw::ERROR_IDS webpagewindow::getFavicon(const QString& url, QString& fname) { + fname = webitem->getFaviconFilePath(url); + if (fname.compare("") == 0) + return conn::brw::EID_NOT_EXISTS; + else + return conn::brw::EID_NO_ERROR; } diff --git a/common/browserdbus.cpp b/common/browserdbus.cpp index 41746fa..a870389 100644 --- a/common/browserdbus.cpp +++ b/common/browserdbus.cpp @@ -616,3 +616,19 @@ QString BrowserDbus::getPageIcon(QString iconPath) { } return iconFilePath; } + +QString BrowserDbus::getFavicon(QString iconPath) { + qDebug() << __PRETTY_FUNCTION__; + QString iconFilePath; + + QDBusReply<conn::brw::ERROR_IDS> reply = + actualtab->getFavicon(iconPath,iconFilePath); + if(reply.isValid()) { + conn::brw::ERROR_IDS ret = reply.value(); + qDebug() << "ERROR_IDS " << ret; + } else { + QDBusError error = reply.error(); + qDebug() << "ERROR " << error.name() << error.message(); + } + return iconFilePath; +} diff --git a/common/browserdbus.h b/common/browserdbus.h index 81b22cf..d3abc1b 100644 --- a/common/browserdbus.h +++ b/common/browserdbus.h @@ -69,6 +69,7 @@ public: Q_INVOKABLE void getScrollPosition(uint &x, uint &y); Q_INVOKABLE void setScrollPosition(uint &x, uint &y); Q_INVOKABLE QString getPageIcon(QString); + Q_INVOKABLE QString getFavicon(QString); QString title() { return m_title; } void setTitle(QString title) { m_title = title; } |