Browse Source

Do something sane on alert, confirm and prompt. Add a commandline switch to enable javascript debug output

Antialize 15 years ago
parent
commit
6cee8035f9
4 changed files with 26 additions and 1 deletions
  1. 1 1
      src/arguments.cc
  2. 20 0
      src/multipageloader.cc
  3. 4 0
      src/multipageloader_p.hh
  4. 1 0
      src/settings.hh

+ 1 - 1
src/arguments.cc

@@ -504,7 +504,7 @@ CommandLineParserPrivate::CommandLineParserPrivate(Settings & s):
 	addarg("no-background",0,"Do not print background", new ConstSetter<bool>(s.background,false,true));
 	addarg("user-style-sheet",0,"Specify a user style sheet, to load with every page", new QStrSetter(s.userStyleSheet,"url",""));
 #endif
-
+	addarg("debug-javascript", 0,"Show javascript debugging output", new ConstSetter<bool>(s.debugJavascript, true, false));
 #if QT_VERSION >= 0x040600
 	addarg("stop-slow-scripts", 0, "Stop slow running javascripts", new ConstSetter<bool>(s.stopSlowScripts, true, false));
 #endif	

+ 20 - 0
src/multipageloader.cc

@@ -40,6 +40,26 @@ bool MyQWebPage::shouldInterruptJavaScript() {
 	return false;
 }
 
+void MyQWebPage::javaScriptAlert(QWebFrame *, const QString & msg) {
+	multiPageLoader.warning(QString("Javascript alert: %1").arg(msg));
+}
+
+bool MyQWebPage::javaScriptConfirm(QWebFrame *, const QString & msg) {
+	multiPageLoader.warning(QString("Javascript confirm: %1 (answered yes)").arg(msg));
+	return true;
+}
+
+bool MyQWebPage::javaScriptPrompt(QWebFrame *, const QString & msg, const QString & defaultValue, QString * result) {
+	multiPageLoader.warning(QString("Javascript prompt: %1 (answered %2)").arg(msg,defaultValue));
+	result = (QString*)&defaultValue;
+	return true;
+}
+
+void MyQWebPage::javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) {
+	if (settings.debugJavascript)
+		multiPageLoader.warning(QString("%1:%2 %3").arg(sourceID).arg(lineNumber).arg(message));
+}
+
 void MyCookieJar::addGlobalCookie(const QString & name, const QString & value) {
 	globalCookies.append(QNetworkCookie(name.toUtf8(), value.toUtf8()));
 }

+ 4 - 0
src/multipageloader_p.hh

@@ -31,6 +31,10 @@ private:
 	MultiPageLoader & multiPageLoader;
 public:
 	MyQWebPage(MultiPageLoader & mpl, Settings & s);
+	virtual void javaScriptAlert(QWebFrame * frame, const QString & msg);
+	virtual bool javaScriptConfirm(QWebFrame * frame, const QString & msg);
+	virtual bool javaScriptPrompt(QWebFrame * frame, const QString & msg, const QString & defaultValue, QString * result);
+	virtual void javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID);
 public slots:
 	bool shouldInterruptJavaScript();
 };

+ 1 - 0
src/settings.hh

@@ -193,6 +193,7 @@ struct Settings {
 	QList< PostItem > post;
 	QString documentTitle;
 	bool stopSlowScripts;
+	bool debugJavascript;
 
 	static QPrinter::PageSize strToPageSize(const char * s, bool * ok=0);
 	static QPair<qreal, QPrinter::Unit> strToUnitReal(const char * s, bool * ok=0);