diff -r 000000000000 -r 1450b09d0cfd browsercore/core/wrtpage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browsercore/core/wrtpage.cpp Tue May 04 12:39:35 2010 +0300 @@ -0,0 +1,149 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include "wrtpage.h" +#include "qwebhistory.h" +#include "webpagedata.h" +//#include "wrtsettings.h" +#include "bedrockprovisioning.h" +#ifdef QT_MOBILITY_BEARER_MANAGEMENT +#include "WebNetworkConnectionManager.h" +#endif // QT_MOBILITY_BEARER_MANAGEMENT + +#include +#include +#include +#include +#include + +void QWEBKIT_EXPORT qt_webpage_setGroupName(QWebPage* page, const QString& groupName); +void QWEBKIT_EXPORT qt_websettings_setOfflineWebApplicationCachePath(const QString& path); + +QDataStream &operator<<(QDataStream &out, const WebPageData &myObj) +{ + out << myObj.m_thumbnail << myObj.m_zoomFactor << myObj.m_contentsPos; + return out; +} + +QDataStream &operator>>(QDataStream &in, WebPageData &myObj) +{ + in >> myObj.m_thumbnail >> myObj.m_zoomFactor >> myObj.m_contentsPos; + return in; +} + +namespace WRT { + +WrtPage::WrtPage(QObject *parent) : QWebPage(parent) +{ + settings()->setAttribute(QWebSettings::PluginsEnabled, true); + settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, !BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->value("PopupBlocking").toInt()); + + // Initialization below can only be done once per Webkit instance (and not once per page) + // otherwise it hits an ASSERT in WebKit in debug mode + static bool initialized = false; + + if (!initialized) { + QString storagePath = QDesktopServices::storageLocation(QDesktopServices::DataLocation); + + QWebSettings::setOfflineStoragePath(QDir::toNativeSeparators(QDir(storagePath).filePath("WebDatabase"))); +#if defined CWRTINTERNALWEBKIT + qt_websettings_setOfflineWebApplicationCachePath(QDir::toNativeSeparators(QDir(storagePath).filePath("ApplicationCache"))); +#endif + initialized = true; + } + +#ifdef QT_MOBILITY_BEARER_MANAGEMENT + m_ConnectionManager = 0; +#endif // QT_MOBILITY_BEARER_MANAGEMENT +} + +WrtPage::~WrtPage() +{ + QList items = history()->items(); + + for (int i = 0; i < history()->count(); i++) { + QWebHistoryItem item = items.at(i); + WebPageData* data = (WebPageData*)(item.userData().value()); + if(data){ + QVariant variant; + item.setUserData(variant); + delete data; + } + } +#ifdef QT_MOBILITY_BEARER_MANAGEMENT + if (m_ConnectionManager) + delete m_ConnectionManager; +#endif // QT_MOBILITY_BEARER_MANAGEMENT +} + +void WrtPage::setPageGroupName(const QString& groupName) +{ + qt_webpage_setGroupName(this, groupName); +} + +QWebPage* WrtPage::createWindow(QWebPage::WebWindowType webWindowType) +{ + WrtPage* wrtPage = new WrtPage(); + emit createWindow(wrtPage); + return wrtPage; +} + + +/*! +// implementation of javaScriptConsoleMessage defined in WebKit qwebpage.h +// User settings are provided through WrtSettingsUI. +// The following choices are offered: +// Logging Off;Log to file;Show pop-up notes;Log to file and show pop-up notes +*/ +void WrtPage::javaScriptConsoleMessage(const QString& messageSource, const QString& messageLevel, const QString& message, int lineNumber, const QString& sourceID) +{ + + int jsSetting = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->value ( "JavaScriptConsoleLog" ).toInt(); + QString logFileName = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->value ( "JavaScriptConsoleLogFilePath" ).toString(); + QString msg = ( "JS Console Log: "+ ( QDate::currentDate() ).toString ( "dd.MM.yyyy" ) +" "+ ( QTime::currentTime() ).toString ( "hh:mm:ss ap" ) +"\nMessage src: "+messageSource+" : "+messageLevel+"\nMessage: " + message + "\nSource: "+sourceID+" : "+QString::number(lineNumber) ); + + if ( jsSetting == 2 || jsSetting == 3 ){ + //display this simple dialog box for now. + QMessageBox::about(view(), "JavaScript Console", msg); + } + if ( jsSetting == 1 || jsSetting == 3 ){ + // message is logged to file + QFile jsFile ( logFileName ); + if ( !jsFile.open ( QIODevice::Append ) ) return; + + QTextStream jsLog ( &jsFile ); + jsLog << msg << "\n"; + jsFile.close(); + } + // Emit message in case some view manager wants to implement a better GUI to display console messages + emit jsConsoleMessage(messageSource, messageLevel, message, lineNumber, sourceID); + +} + +#ifdef QT_MOBILITY_BEARER_MANAGEMENT +void WrtPage::setNetworkConnectionManager(WebNetworkConnectionManager *manager) +{ + if (manager == m_ConnectionManager) + return; + if (m_ConnectionManager && m_ConnectionManager->parent() == this) + delete m_ConnectionManager; + m_ConnectionManager = manager; +} +#endif // QT_MOBILITY_BEARER_MANAGEMENT +} // end of namespace WRT +