From 1641ea5ed0a2844ea8bbda2ebe6141bf1bed5e42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonatan=20P=C3=A5lsson?= Date: Tue, 15 Apr 2014 15:29:27 +0200 Subject: Emit onActionStateChanged for forward and backward function availability --- browser/browserview.cpp | 18 ++++++++++++++++ browser/browserview.h | 2 ++ browser/unit-tests/browserdbus/testbrowserdbus.cpp | 24 ++++++++++++++++++++++ browser/unit-tests/browserdbus/testbrowserdbus.h | 2 +- common/browserdbus.cpp | 6 +++++- common/browserdbus.h | 2 +- 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 #include #include +#include #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 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 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(); -- cgit v1.2.1