summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-15 15:29:27 +0200
committerJonatan Pålsson <jonatan.palsson@pelagicore.com>2014-04-15 15:29:27 +0200
commit1641ea5ed0a2844ea8bbda2ebe6141bf1bed5e42 (patch)
treeffb84c1a670e36954b89e1b9e019ffb231c945b0
parentb0532aac58371de2715c019d3e86387874493963 (diff)
downloadbrowser-poc-1641ea5ed0a2844ea8bbda2ebe6141bf1bed5e42.tar.gz
Emit onActionStateChanged for forward and backward function availability
-rw-r--r--browser/browserview.cpp18
-rw-r--r--browser/browserview.h2
-rw-r--r--browser/unit-tests/browserdbus/testbrowserdbus.cpp24
-rw-r--r--browser/unit-tests/browserdbus/testbrowserdbus.h2
-rw-r--r--common/browserdbus.cpp6
-rw-r--r--common/browserdbus.h2
6 files changed, 51 insertions, 3 deletions
diff --git a/browser/browserview.cpp b/browser/browserview.cpp
index d8ad8e8..4ac905a 100644
--- a/browser/browserview.cpp
+++ b/browser/browserview.cpp
@@ -18,6 +18,7 @@
#include <QTemporaryFile>
#include <QSemaphore>
#include <QWebSettings>
+#include <QWebHistory>
#include "browserview.h"
#include "cachemanager.h"
@@ -142,6 +143,15 @@ void BrowserView::loadFinished(bool ok)
"}, true);");
emit pageLoadFinished (ok);
+
+ unsigned int changes = 0;
+ changes |= canGoBack() ? 0x1 : 0;
+ changes |= canGoForward() ? 0x2 : 0;
+
+ if (changes) {
+ qDebug() << "Emitting signal onActionStateChanged";
+ emit onActionStateChanged(changes);
+ }
}
void BrowserView::scroll (conn::brw::SCROLL_DIRECTION dir, conn::brw::SCROLL_TYPE type)
@@ -330,3 +340,11 @@ void BrowserView::onSelectIndexes(QList<int> indexes) {
m_webview.page()->mainFrame()->evaluateJavaScript(cmd);
}
}
+
+bool BrowserView::canGoBack() {
+ return m_webview.history()->canGoBack();
+}
+
+bool BrowserView::canGoForward() {
+ return m_webview.history()->canGoForward();
+}
diff --git a/browser/browserview.h b/browser/browserview.h
index 9f5b5f8..dcbb9eb 100644
--- a/browser/browserview.h
+++ b/browser/browserview.h
@@ -122,6 +122,8 @@ public:
QString getFaviconFilePath(QString url);
void activate();
void select();
+ bool canGoBack();
+ bool canGoForward();
signals:
void pageLoadStarted();
diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.cpp b/browser/unit-tests/browserdbus/testbrowserdbus.cpp
index daed02a..c68fafa 100644
--- a/browser/unit-tests/browserdbus/testbrowserdbus.cpp
+++ b/browser/unit-tests/browserdbus/testbrowserdbus.cpp
@@ -486,4 +486,28 @@ void TestBrowserDBus::testDoesntNeedUnfocusToTriggerInputSignal() {
QVERIFY(prevValue == "Hello world");
}
+void TestBrowserDBus::testCorrectlySetsBackBrowserActionState() {
+ QSignalSpy spy (m_bdb, SIGNAL (onActionStateChanged(uint)));
+ m_bdb->createPageWindow(1,0,0,800,600);
+ m_bdb->loadurl(testFileUrl());
+ QTest::qSleep(1000);
+ m_bdb->loadurl("http://google.com");
+ QTest::qSleep(1000);
+ m_bdb->loadurl("http://amazon.com");
+ QTest::qSleep(1000);
+ QVERIFY(spy.wait(1000));
+ qDebug() << spy;
+
+ conn::brw::BrowserActions ba = m_bdb->getBrowserActionState();
+ QVERIFY(ba.u8Back);
+ QVERIFY(!ba.u8Forward);
+
+ m_bdb->goBack();
+ QVERIFY(spy.wait(1000));
+ QVERIFY(spy.wait(1000));
+ ba = m_bdb->getBrowserActionState();
+ QVERIFY(ba.u8Back);
+ QVERIFY(ba.u8Forward);
+ qDebug() << spy;
+}
QTEST_MAIN (TestBrowserDBus);
diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.h b/browser/unit-tests/browserdbus/testbrowserdbus.h
index e06c65d..65334d7 100644
--- a/browser/unit-tests/browserdbus/testbrowserdbus.h
+++ b/browser/unit-tests/browserdbus/testbrowserdbus.h
@@ -59,7 +59,7 @@ private slots:
void testGetOldInputText();
void testNewTextReplacesOldText();
void testDoesntNeedUnfocusToTriggerInputSignal();
-
+ void testCorrectlySetsBackBrowserActionState();
private:
QString testFileUrl() {
diff --git a/common/browserdbus.cpp b/common/browserdbus.cpp
index 696a4ac..cc41cdd 100644
--- a/common/browserdbus.cpp
+++ b/common/browserdbus.cpp
@@ -369,8 +369,9 @@ void BrowserDbus::InputTextReceived(QString a_strInputName, QString a_strDefault
}
// IWebPageWindow
-void BrowserDbus::getBrowserActionState() {
+conn::brw::BrowserActions BrowserDbus::getBrowserActionState() {
qDebug() << __PRETTY_FUNCTION__;
+ conn::brw::BrowserActions ba;
QDBusPendingReply<conn::brw::ERROR_IDS, conn::brw::BrowserActions> reply = actualtab->getBrowserActionsState();
reply.waitForFinished();
@@ -380,10 +381,13 @@ void BrowserDbus::getBrowserActionState() {
qDebug() << "ERROR_IDS " << ret << actions.u8Back << actions.u8Forward <<
actions.u8Reload << actions.u8Stop << actions.u8LoadUrl << actions.u8Select;
+ ba = actions;
} else {
QDBusError error = reply.error();
qDebug() << "ERROR " << error.name() << error.message();
}
+
+ return ba;
}
void BrowserDbus::getContentSize() {
diff --git a/common/browserdbus.h b/common/browserdbus.h
index e9f01a4..f7edd67 100644
--- a/common/browserdbus.h
+++ b/common/browserdbus.h
@@ -56,7 +56,7 @@ public:
Q_INVOKABLE void getGeometry();
Q_INVOKABLE void setGeometry(int x, int y, int width, int height);
Q_INVOKABLE void getContentSize();
- Q_INVOKABLE void getBrowserActionState();
+ Q_INVOKABLE conn::brw::BrowserActions getBrowserActionState();
Q_INVOKABLE void createPageWindow(int deviceid, int x, int y, int width, int height);
Q_INVOKABLE void destroyPageWindow(qlonglong windowhandle);
Q_INVOKABLE void getPageWindows();