summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-02-05 19:02:31 +0100
committerJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-02-05 19:02:31 +0100
commitbbf5d657eeb376b0bfaec73493734117ec2b6ce0 (patch)
treeb8d592b62baf27bab05ccf5b1e9ff8fbde563456
parent3dd286e11a433ad9b0ca1d95f22d6447744e8911 (diff)
downloadbrowser-poc-bbf5d657eeb376b0bfaec73493734117ec2b6ce0.tar.gz
Implemented getFavicon
-rw-r--r--browser/browserview.cpp19
-rw-r--r--browser/browserview.h3
-rw-r--r--browser/unit-tests/browserdbus/testbrowserdbus.cpp8
-rw-r--r--browser/unit-tests/browserdbus/testbrowserdbus.h1
-rw-r--r--browser/unit-tests/browserview/testbrowser.cpp14
-rw-r--r--browser/unit-tests/browserview/testbrowser.h1
-rw-r--r--browser/webpagewindow.cpp7
-rw-r--r--common/browserdbus.cpp16
-rw-r--r--common/browserdbus.h1
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; }