diff options
Diffstat (limited to 'examples/webenginewidgets/demobrowser')
-rw-r--r-- | examples/webenginewidgets/demobrowser/browserapplication.cpp | 29 | ||||
-rw-r--r-- | examples/webenginewidgets/demobrowser/browserapplication.h | 1 |
2 files changed, 21 insertions, 9 deletions
diff --git a/examples/webenginewidgets/demobrowser/browserapplication.cpp b/examples/webenginewidgets/demobrowser/browserapplication.cpp index 37bc05c34..dc071dabd 100644 --- a/examples/webenginewidgets/demobrowser/browserapplication.cpp +++ b/examples/webenginewidgets/demobrowser/browserapplication.cpp @@ -127,11 +127,7 @@ BrowserApplication::BrowserApplication(int &argc, char **argv) socket.connectToServer(serverName); if (socket.waitForConnected(500)) { QTextStream stream(&socket); - QStringList args = QCoreApplication::arguments(); - if (args.count() > 1) - stream << args.last(); - else - stream << QString(); + stream << getCommandLineUrlArgument(); stream.flush(); socket.waitForBytesWritten(); return; @@ -246,11 +242,13 @@ void BrowserApplication::postLaunch() // newMainWindow() needs to be called in main() for this to happen if (m_mainWindows.count() > 0) { - QStringList args = QCoreApplication::arguments(); - if (args.count() > 1) - mainWindow()->loadPage(args.last()); - else + const QString url = getCommandLineUrlArgument(); + if (!url.isEmpty()) { + mainWindow()->loadPage(url); + } else { mainWindow()->slotHome(); + } + } BrowserApplication::historyManager(); } @@ -397,6 +395,19 @@ void BrowserApplication::installTranslator(const QString &name) QApplication::installTranslator(translator); } +QString BrowserApplication::getCommandLineUrlArgument() const +{ + const QStringList args = QCoreApplication::arguments(); + if (args.count() > 1) { + const QString lastArg = args.last(); + const bool isValidUrl = QUrl::fromUserInput(lastArg).isValid(); + if (isValidUrl) + return lastArg; + } + + return QString(); +} + #if defined(Q_OS_OSX) bool BrowserApplication::event(QEvent* event) { diff --git a/examples/webenginewidgets/demobrowser/browserapplication.h b/examples/webenginewidgets/demobrowser/browserapplication.h index d473d9bc9..b9832531a 100644 --- a/examples/webenginewidgets/demobrowser/browserapplication.h +++ b/examples/webenginewidgets/demobrowser/browserapplication.h @@ -121,6 +121,7 @@ private slots: private: void clean(); void installTranslator(const QString &name); + QString getCommandLineUrlArgument() const; static HistoryManager *s_historyManager; static DownloadManager *s_downloadManager; |