diff options
author | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-20 17:06:16 +0100 |
---|---|---|
committer | Jonatan Pålsson <jonatan.palsson@pelagicore.com> | 2014-02-20 17:06:16 +0100 |
commit | 5871c548a1aa47a84852e0181291f0668224c0bc (patch) | |
tree | c76ce18746dbf80a64ac351f36f526707dc091ba | |
parent | 3e8f63d8a07555e0e562b00ad18fd5fdcbc069b5 (diff) | |
download | browser-poc-5871c548a1aa47a84852e0181291f0668224c0bc.tar.gz |
Implemented selectOption
-rw-r--r-- | browser/browser.cpp | 7 | ||||
-rw-r--r-- | browser/browserview.cpp | 8 | ||||
-rw-r--r-- | browser/browserview.h | 1 | ||||
-rw-r--r-- | browser/unit-tests/browserdbus/testbrowserdbus.cpp | 25 | ||||
-rw-r--r-- | browser/unit-tests/browserdbus/testbrowserdbus.h | 1 | ||||
-rw-r--r-- | browser/unit-tests/browserdbus/webpagegenerator.h | 2 | ||||
-rw-r--r-- | browser/userinput.cpp | 10 | ||||
-rw-r--r-- | browser/userinput.h | 1 | ||||
-rw-r--r-- | common/browserdbus.cpp | 15 | ||||
-rw-r--r-- | common/browserdbus.h | 1 |
10 files changed, 65 insertions, 6 deletions
diff --git a/browser/browser.cpp b/browser/browser.cpp index 324817b..a16ba44 100644 --- a/browser/browser.cpp +++ b/browser/browser.cpp @@ -59,9 +59,10 @@ conn::brw::ERROR_IDS browser::createPageWindow(int a_eDeviceId, const conn::brw: connect(bvi, SIGNAL(onContentSizeChanged(uint, uint)),wpw,SIGNAL(onContentSizeChanged(uint,uint))); connect(bvi, SIGNAL(onFaviconReceived()), wpw, SIGNAL(onFaviconReceived())); - connect(m_userInput, SIGNAL(inputText(QString)), this, SLOT(inputText(QString))); - connect(bvi, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool)), - m_userInput, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool))); + connect(m_userInput, SIGNAL(inputText(QString)), this, SLOT(inputText(QString))); + connect(bvi, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool)), + m_userInput, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool))); + connect(m_userInput, SIGNAL(selectIndexes(QList<int>)), bvi, SLOT(onSelectIndexes(QList<int>))); QString *webpagewindowservice = new QString("/Browser/IWebPageWindow" + QString::number(a_hPageWindowHandle)); qDebug() << *webpagewindowservice; diff --git a/browser/browserview.cpp b/browser/browserview.cpp index 593d0af..60f57c0 100644 --- a/browser/browserview.cpp +++ b/browser/browserview.cpp @@ -277,3 +277,11 @@ void BrowserView::select() { void BrowserView::activate() { this->activateWindow(); } + +void BrowserView::onSelectIndexes(QList<int> indexes) { + for (int i = 0; i < indexes.size(); i++) { + QString cmd = QString("document.activeElement.options[%1].selected = true").arg( + QString::number(indexes.at(i))); + m_webview.page()->mainFrame()->evaluateJavaScript(cmd); + } +} diff --git a/browser/browserview.h b/browser/browserview.h index 177e646..509d762 100644 --- a/browser/browserview.h +++ b/browser/browserview.h @@ -139,6 +139,7 @@ protected slots: void linkClicked(QUrl); void scrollPositionChanged(uint x, uint y); void contentSizeChanged(const QSize&); + void onSelectIndexes(QList<int>); private: QGraphicsWebView m_webview; diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.cpp b/browser/unit-tests/browserdbus/testbrowserdbus.cpp index 1a78126..5de6cd1 100644 --- a/browser/unit-tests/browserdbus/testbrowserdbus.cpp +++ b/browser/unit-tests/browserdbus/testbrowserdbus.cpp @@ -330,6 +330,10 @@ void TestBrowserDBus::testGetsNotifiedWhenSelectIsSelected() { QTest::qSleep(300); QProcess::execute("xdotool click 1"); QVERIFY(spy.wait(1000)); + conn::brw::SelectableOptionList options = spy.takeFirst().at(1).value<conn::brw::SelectableOptionList>(); + for (int i = 0; i < options.size(); i++) { + qDebug() << options.at(i).strValue; + } } void TestBrowserDBus::testGetsNotifiedOnAuthDialog() { @@ -392,4 +396,25 @@ void TestBrowserDBus::testCanCancelAuth() { QVERIFY(spy2.wait(1000)); } +void TestBrowserDBus::testCanSelectOptionsInSelectList() { + QSignalSpy spy (m_bdb, SIGNAL(onSelect(const QString &, const conn::brw::SelectableOptionList &, bool))); + m_bdb->createPageWindow(1,0,0,800,600); + m_bdb->loadurl(testFileUrl()); + QTest::qSleep(300); + QProcess::execute("xdotool mousemove 320 375"); + QProcess::execute("xdotool click 1"); + QTest::qSleep(300); + QProcess::execute("xdotool click 1"); + QVERIFY(spy.wait(1000)); + conn::brw::SelectableOptionList options = spy.takeFirst().at(1).value<conn::brw::SelectableOptionList>(); + conn::brw::SelectableOption newOption = options.at(0); + conn::brw::SelectableOption newOption2 = options.at(1); + newOption.bSelected = true; + newOption2.bSelected = true; + options.replace(0, newOption); + options.replace(1, newOption2); + + m_bdb->selectOption(options); +} + QTEST_MAIN (TestBrowserDBus); diff --git a/browser/unit-tests/browserdbus/testbrowserdbus.h b/browser/unit-tests/browserdbus/testbrowserdbus.h index 22c5583..8a0a373 100644 --- a/browser/unit-tests/browserdbus/testbrowserdbus.h +++ b/browser/unit-tests/browserdbus/testbrowserdbus.h @@ -55,6 +55,7 @@ private slots: void testCanCloseSslDialog(); void testCanCancelSSL(); void testCanCancelAuth(); + void testCanSelectOptionsInSelectList(); private: QString testFileUrl() { diff --git a/browser/unit-tests/browserdbus/webpagegenerator.h b/browser/unit-tests/browserdbus/webpagegenerator.h index ebb8d28..2169d29 100644 --- a/browser/unit-tests/browserdbus/webpagegenerator.h +++ b/browser/unit-tests/browserdbus/webpagegenerator.h @@ -29,7 +29,7 @@ public: " Set status bar text" " </DIV>" " <INPUT type='text' name='input' style='float:left;'></INPUT>" - " <SELECT style='float:left'><OPTION>1</OPTION><OPTION>2</OPTION><OPTION>3</OPTION></SELECT>" + " <SELECT style='float:left' multiple><OPTION>1</OPTION><OPTION>2</OPTION><OPTION>3</OPTION></SELECT>" " <DIV style='height:100; width:100; background-color:gray; float: left; clear:left'" " onClick=\"JavaScript:alert('browser-poc');\" >" " Trigger alert" diff --git a/browser/userinput.cpp b/browser/userinput.cpp index da06fda..978a9a1 100644 --- a/browser/userinput.cpp +++ b/browser/userinput.cpp @@ -102,5 +102,13 @@ conn::brw::ERROR_IDS userinput::getPrevEnteredValues (const QString &a_strInputN conn::brw::ERROR_IDS userinput::selectOption(const conn::brw::SelectableOptionList &a_oOptionList) { - return conn::brw::EID_NOT_IMPLEMENTED; + QList<int> indexes; + for (int i = 0; i < a_oOptionList.size(); i++) { + if (a_oOptionList.at(i).bSelected) { + indexes.append(i); + } + } + + emit selectIndexes (indexes); + return conn::brw::EID_NO_ERROR; } diff --git a/browser/userinput.h b/browser/userinput.h index 814bd1e..54f21de 100644 --- a/browser/userinput.h +++ b/browser/userinput.h @@ -44,6 +44,7 @@ signals: void doCloseAlertDialog(void); void doCloseConfirmDialog(bool); void doClosePromptDialog(QString, bool); + void selectIndexes(QList<int>); public Q_SLOTS: conn::brw::ERROR_IDS inputText(conn::brw::DIALOG_RESULT a_eResult, const QString &a_strInputValue); diff --git a/common/browserdbus.cpp b/common/browserdbus.cpp index 7c13574..df81f39 100644 --- a/common/browserdbus.cpp +++ b/common/browserdbus.cpp @@ -776,7 +776,6 @@ void BrowserDbus::closeAuthenticationDialog(conn::brw::DIALOG_RESULT r, const co void BrowserDbus::closeSslErrorDialog(conn::brw::DIALOG_RESULT r, bool b) { qDebug() << __PRETTY_FUNCTION__; - QStringList list; QDBusReply<conn::brw::ERROR_IDS> reply = networkmanager->closeSslErrorDialog(r,b); if(reply.isValid()) { @@ -787,3 +786,17 @@ void BrowserDbus::closeSslErrorDialog(conn::brw::DIALOG_RESULT r, bool b) qDebug() << "ERROR " << error.name() << error.message(); } } + +void BrowserDbus::selectOption(const conn::brw::SelectableOptionList &lst) +{ + qDebug() << __PRETTY_FUNCTION__; + + QDBusReply<conn::brw::ERROR_IDS> reply = userinput->selectOption(lst); + 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(); + } +} diff --git a/common/browserdbus.h b/common/browserdbus.h index 8cb6250..e88efef 100644 --- a/common/browserdbus.h +++ b/common/browserdbus.h @@ -79,6 +79,7 @@ public: Q_INVOKABLE QStringList getPrevEnteredValues(QString name, QString value, conn::brw::INPUT_ELEMENT_TYPE type); Q_INVOKABLE void closeAuthenticationDialog(conn::brw::DIALOG_RESULT, const conn::brw::AuthenticationData&); Q_INVOKABLE void closeSslErrorDialog(conn::brw::DIALOG_RESULT, bool); + Q_INVOKABLE void selectOption(const conn::brw::SelectableOptionList&); QString title() { return m_title; } |