ginebra2/GWebPage.cpp
changeset 5 0f2326c2a325
child 6 1c3b8676e58c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/GWebPage.cpp	Wed Jun 23 17:59:43 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License as published by
+* the Free Software Foundation, version 2.1 of the License.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public License
+* along with this program.  If not,
+* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+*
+* Description:
+*
+*/
+
+#include "GWebPage.h"
+
+
+namespace GVA {
+
+// ----------------------------------------
+// WebPageWrapper
+// ----------------------------------------
+
+WebPageWrapper::WebPageWrapper(QObject *parent, const QString &prefix)
+    : QWebPage(parent),
+    m_prefix(prefix) {
+}
+
+// Called when javascript errors are hit in the chrome page.
+void WebPageWrapper::javaScriptConsoleMessage(const QString & message, int lineNumber, const QString & sourceID) {
+    qDebug() << m_prefix << ":";
+    qDebug() << (const char*)QString("===\t%2:%3 %4")
+            .arg(sourceID)
+            .arg(lineNumber)
+            .arg(message).toAscii();
+}
+
+// ----------------------------------------
+// GSuperWebPage
+// ----------------------------------------
+
+GSuperWebPage::GSuperWebPage(WebPageWrapper *page, ChromeWidget *chromeWidget)
+    : GWebPage(page),
+    m_chromeWidget(chromeWidget)
+{
+    if (!m_page) {
+        m_page = new WebPageWrapper(this, "Superpage javascript error");
+    }
+    qDebug() << "GSuperWebPage::GSuperWebPage: page=" << GWebPage::page();
+    connect(GWebPage::page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(onJavaScriptWindowObjectCleared()));
+}
+
+void GSuperWebPage::load(const QString &url) {
+    qDebug() << "GSuperWebPage::load: " << url;
+    page()->mainFrame()->load(url);
+}
+
+void GSuperWebPage::onJavaScriptWindowObjectCleared() {
+    qDebug() << "GSuperWebPage::onJavaScriptWindowObjectCleared: " << objectName();
+    if (m_chromeWidget)
+        m_chromeWidget->exportJSObjectsToPage(m_page);
+}
+
+}  // GVA namespace