--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/webview/SettingsContainer.cpp Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: DocumentLoader in webkit side
+*
+*/
+
+
+#include <../bidi.h>
+#include "SettingsContainer.h"
+#include "WebView.h"
+#include "BrCtl.h"
+#include "WebUtil.h"
+#include "Page.h"
+#include "frame.h"
+#include "frametree.h"
+#include "frameview.h"
+#include "document.h"
+#include "Settings.h"
+#include "HttpSessionManager.h"
+#include "StaticObjectsContainer.h"
+#include "ResourceLoaderDelegate.h"
+#include "HistoryInterface.h"
+#include "brctldefs.h"
+#include "WebDocumentLoader.h"
+#include "Frame.h"
+#include "FrameLoader.h"
+#include "WebCharsetData.h"
+
+using namespace WebCore;
+
+static const int defaultFontSize = 12;
+
+SettingsContainer::SettingsContainer(WebView* view, HistoryControllerInterface* historyController)
+{
+ m_webView = view;
+ m_historyController = historyController;
+ brctlSettings[TBrCtlDefs::ESettingsSmallScreen] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsAutoLoadImages] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsFontSize] = TBrCtlDefs::EFontSizeLevelNormal;
+ brctlSettings[TBrCtlDefs::ESettingsEmbedded] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsTextWrapEnabled] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsCookiesEnabled] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsCSSFetchEnabled] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsECMAScriptEnabled] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsIMEINotifyEnabled] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsCharacterset] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsSendRefererHeader] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsSecurityWarnings] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsApId] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsCurrentZoomLevelIndex] = 100;
+ brctlSettings[TBrCtlDefs::ESettingsPageOverview] = view->pageScalerEnabled();
+ brctlSettings[TBrCtlDefs::ESettingsNumOfDownloads] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsLaunchAppUid] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsLaunchViewId] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsLaunchCustomMessageId] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsBackList] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsAutoRefresh] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsBrowserUtf8Encoding] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsAutoFormFillEnabled] = 2;
+ brctlSettings[TBrCtlDefs::ESettingsSavedPage] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsSmartLink] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsAutoOpenDownloads] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsDisableFlash] = 0;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarOnOff] = 1;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton1Cmd] = 7;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton2Cmd] = 8;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton3Cmd] = 9;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton4Cmd] = 10;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton5Cmd] = 11;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton6Cmd] = 12;
+ brctlSettings[TBrCtlDefs::ESettingsToolbarButton7Cmd] = 13;
+ brctlSettings[TBrCtlDefs::ESettingsScriptLog] = 0;
+
+ updatePageSetting(TBrCtlDefs::ESettingsAutoLoadImages);
+ updatePageSetting(TBrCtlDefs::ESettingsFontSize);
+ updatePageSetting(TBrCtlDefs::ESettingsECMAScriptEnabled);
+
+ updateHttpSetting(TBrCtlDefs::ESettingsEmbedded);
+ updateHttpSetting(TBrCtlDefs::ESettingsCookiesEnabled);
+ updateHttpSetting(TBrCtlDefs::ESettingsIMEINotifyEnabled);
+ updateHttpSetting(TBrCtlDefs::ESettingsCharacterset);
+ updateHttpSetting(TBrCtlDefs::ESettingsSendRefererHeader);
+ updateHttpSetting(TBrCtlDefs::ESettingsSecurityWarnings);
+ updateHttpSetting(TBrCtlDefs::ESettingsApId);
+ updateHttpSetting(TBrCtlDefs::ESettingsAutoOpenDownloads);
+
+ updateHistorySetting(TBrCtlDefs::ESettingsBackList);
+
+ updateDocumentLoaderSettings(TBrCtlDefs::ESettingsCharacterset);
+}
+
+
+void SettingsContainer::setBrctlSetting(TBrCtlDefs::TBrCtlSettings setting, unsigned int value)
+{
+ if (setting > TBrCtlDefs::ESettingsUnknown && setting < TBrCtlDefs::ESettingsMaxEnum) {
+ brctlSettings[setting] = value;
+ updatePageSetting(setting);
+ updateHttpSetting(setting);
+ updateHistorySetting(setting);
+ updateDocumentLoaderSettings(setting);
+ updateZoomSettings(setting, value);
+ }
+}
+
+void SettingsContainer::updatePageSetting(TBrCtlDefs::TBrCtlSettings setting)
+{
+ switch (setting)
+ {
+ case TBrCtlDefs::ESettingsAutoLoadImages:
+ m_webView->page()->settings()->setLoadsImagesAutomatically(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsFontSize:
+ {
+ m_webView->page()->settings()->setDefaultFontSize(textMultiplier(brctlSettings[setting], defaultFontSize));
+ // force layout on the mainframe
+ Frame* mf = core(m_webView->mainFrame());
+ FrameView* v = mf->view();
+ Document* doc = mf->document();
+ if (v && doc) {
+ for (Frame* f= mf; f; f = f->tree()->traverseNext(mf))
+ f->document()->recalcStyle(Node::Force);
+ v->setNeedsLayout();
+ v->layout();
+ }
+ break;
+ }
+ case TBrCtlDefs::ESettingsECMAScriptEnabled:
+ m_webView->page()->settings()->setJavaScriptEnabled(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsCurrentZoomLevelIndex:
+ m_webView->setZoomLevel(brctlSettings[setting]);
+ break;
+ }
+}
+
+void SettingsContainer::updateHttpSetting(TBrCtlDefs::TBrCtlSettings setting)
+{
+ HttpSessionManager* httpSessionMgr = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager();
+ switch (setting)
+ {
+ case TBrCtlDefs::ESettingsEmbedded:
+ httpSessionMgr->setEmbedded(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsCookiesEnabled:
+ httpSessionMgr->enableCookies(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsIMEINotifyEnabled:
+ httpSessionMgr->enableImei(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsCharacterset:
+ httpSessionMgr->setCharset(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsSendRefererHeader:
+ httpSessionMgr->enableReferer(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsSecurityWarnings:
+ httpSessionMgr->enableSecurityDialogs(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsApId:
+ httpSessionMgr->setAp(brctlSettings[setting]);
+ break;
+ case TBrCtlDefs::ESettingsAutoOpenDownloads:
+ httpSessionMgr->enableAutoOpenDownloads(brctlSettings[setting]);
+ break;
+ }
+}
+
+void SettingsContainer::updateHistorySetting(TBrCtlDefs::TBrCtlSettings setting)
+{
+ switch (setting)
+ {
+ case TBrCtlDefs::ESettingsBackList:
+ m_historyController->setBackListAllowed(brctlSettings[setting]);
+ break;
+ }
+}
+
+void SettingsContainer::updateDocumentLoaderSettings(TBrCtlDefs::TBrCtlSettings setting)
+{
+ switch (setting)
+ {
+ case TBrCtlDefs::ESettingsCharacterset:
+ {
+ const TText* charset = charsetForUid(brctlSetting(TBrCtlDefs::ESettingsCharacterset));
+ TPtrC ptr(KNullDesC);
+ if (charset) {
+ ptr.Set(charset);
+ }
+ if (core(m_webView->mainFrame())->loader()->activeDocumentLoader()) {
+ core(m_webView->mainFrame())->loader()->activeDocumentLoader()->setOverrideEncoding(ptr);
+ }
+ break;
+ }
+ }
+}
+
+unsigned int SettingsContainer::brctlSetting(TBrCtlDefs::TBrCtlSettings setting)
+{
+ unsigned int retVal (0);
+ HttpSessionManager* httpSessionMgr = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager();
+ switch( setting )
+ {
+ case TBrCtlDefs::ESettingsSmallScreen:
+ case TBrCtlDefs::ESettingsAutoLoadImages:
+ case TBrCtlDefs::ESettingsEmbedded:
+ case TBrCtlDefs::ESettingsTextWrapEnabled:
+ case TBrCtlDefs::ESettingsCookiesEnabled:
+ case TBrCtlDefs::ESettingsCSSFetchEnabled:
+ case TBrCtlDefs::ESettingsECMAScriptEnabled:
+ case TBrCtlDefs::ESettingsIMEINotifyEnabled:
+ case TBrCtlDefs::ESettingsSecurityWarnings:
+ case TBrCtlDefs::ESettingsSendRefererHeader:
+ case TBrCtlDefs::ESettingsAutoRefresh:
+ case TBrCtlDefs::ESettingsSmartLink:
+ case TBrCtlDefs::ESettingsAutoOpenDownloads:
+ case TBrCtlDefs::ESettingsDisableFlash:
+ case TBrCtlDefs::ESettingsFontSize:
+ case TBrCtlDefs::ESettingsCharacterset:
+ case TBrCtlDefs::ESettingsLaunchAppUid:
+ case TBrCtlDefs::ESettingsLaunchViewId:
+ case TBrCtlDefs::ESettingsLaunchCustomMessageId:
+ case TBrCtlDefs::ESettingsAutoFormFillEnabled:
+ case TBrCtlDefs::ESettingsApId:
+ case TBrCtlDefs::ESettingsCurrentZoomLevelIndex:
+ case TBrCtlDefs::ESettingsPageOverview:
+ case TBrCtlDefs::ESettingsBackList:
+ case TBrCtlDefs::ESettingsToolbarOnOff:
+ case TBrCtlDefs::ESettingsToolbarButton1Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton2Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton3Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton4Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton5Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton6Cmd:
+ case TBrCtlDefs::ESettingsToolbarButton7Cmd:
+ case TBrCtlDefs::ESettingsScriptLog:
+ case TBrCtlDefs::ESettingsZoomLevelMin:
+ case TBrCtlDefs::ESettingsZoomLevelMax:
+ case TBrCtlDefs::ESettingsZoomLevelDefault:
+ {
+ retVal = brctlSettings[setting];
+ break;
+ }
+ case TBrCtlDefs::ESettingsNumOfDownloads :
+ {
+ retVal = httpSessionMgr->httpDownload()->numOfDownloads();
+ break;
+ }
+ default:
+ {
+ break; // should not occur
+ }
+ } // end of switch
+ return retVal;
+
+}
+
+void SettingsContainer::updateZoomSettings(TBrCtlDefs::TBrCtlSettings setting, unsigned int value )
+{
+ m_webView->updateZoomLevel( setting, value );
+}