|
1 /* |
|
2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of the License "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: DocumentLoader in webkit side |
|
15 * |
|
16 */ |
|
17 |
|
18 |
|
19 #include <../bidi.h> |
|
20 #include "SettingsContainer.h" |
|
21 #include "WebView.h" |
|
22 #include "BrCtl.h" |
|
23 #include "WebUtil.h" |
|
24 #include "Page.h" |
|
25 #include "frame.h" |
|
26 #include "frametree.h" |
|
27 #include "frameview.h" |
|
28 #include "document.h" |
|
29 #include "Settings.h" |
|
30 #include "HttpSessionManager.h" |
|
31 #include "StaticObjectsContainer.h" |
|
32 #include "ResourceLoaderDelegate.h" |
|
33 #include "HistoryInterface.h" |
|
34 #include "brctldefs.h" |
|
35 #include "WebDocumentLoader.h" |
|
36 #include "Frame.h" |
|
37 #include "FrameLoader.h" |
|
38 #include "WebCharsetData.h" |
|
39 |
|
40 using namespace WebCore; |
|
41 |
|
42 static const int defaultFontSize = 12; |
|
43 |
|
44 SettingsContainer::SettingsContainer(WebView* view, HistoryControllerInterface* historyController) |
|
45 { |
|
46 m_webView = view; |
|
47 m_historyController = historyController; |
|
48 brctlSettings[TBrCtlDefs::ESettingsSmallScreen] = 0; |
|
49 brctlSettings[TBrCtlDefs::ESettingsAutoLoadImages] = 1; |
|
50 brctlSettings[TBrCtlDefs::ESettingsFontSize] = TBrCtlDefs::EFontSizeLevelNormal; |
|
51 brctlSettings[TBrCtlDefs::ESettingsEmbedded] = 0; |
|
52 brctlSettings[TBrCtlDefs::ESettingsTextWrapEnabled] = 0; |
|
53 brctlSettings[TBrCtlDefs::ESettingsCookiesEnabled] = 1; |
|
54 brctlSettings[TBrCtlDefs::ESettingsCSSFetchEnabled] = 0; |
|
55 brctlSettings[TBrCtlDefs::ESettingsECMAScriptEnabled] = 1; |
|
56 brctlSettings[TBrCtlDefs::ESettingsIMEINotifyEnabled] = 0; |
|
57 brctlSettings[TBrCtlDefs::ESettingsCharacterset] = 0; |
|
58 brctlSettings[TBrCtlDefs::ESettingsSendRefererHeader] = 0; |
|
59 brctlSettings[TBrCtlDefs::ESettingsSecurityWarnings] = 1; |
|
60 brctlSettings[TBrCtlDefs::ESettingsApId] = 0; |
|
61 brctlSettings[TBrCtlDefs::ESettingsCurrentZoomLevelIndex] = 100; |
|
62 brctlSettings[TBrCtlDefs::ESettingsPageOverview] = view->pageScalerEnabled(); |
|
63 brctlSettings[TBrCtlDefs::ESettingsNumOfDownloads] = 0; |
|
64 brctlSettings[TBrCtlDefs::ESettingsLaunchAppUid] = 0; |
|
65 brctlSettings[TBrCtlDefs::ESettingsLaunchViewId] = 0; |
|
66 brctlSettings[TBrCtlDefs::ESettingsLaunchCustomMessageId] = 0; |
|
67 brctlSettings[TBrCtlDefs::ESettingsBackList] = 1; |
|
68 brctlSettings[TBrCtlDefs::ESettingsAutoRefresh] = 1; |
|
69 brctlSettings[TBrCtlDefs::ESettingsBrowserUtf8Encoding] = 0; |
|
70 brctlSettings[TBrCtlDefs::ESettingsAutoFormFillEnabled] = 2; |
|
71 brctlSettings[TBrCtlDefs::ESettingsSavedPage] = 1; |
|
72 brctlSettings[TBrCtlDefs::ESettingsSmartLink] = 1; |
|
73 brctlSettings[TBrCtlDefs::ESettingsAutoOpenDownloads] = 1; |
|
74 brctlSettings[TBrCtlDefs::ESettingsDisableFlash] = 0; |
|
75 brctlSettings[TBrCtlDefs::ESettingsToolbarOnOff] = 1; |
|
76 brctlSettings[TBrCtlDefs::ESettingsToolbarButton1Cmd] = 7; |
|
77 brctlSettings[TBrCtlDefs::ESettingsToolbarButton2Cmd] = 8; |
|
78 brctlSettings[TBrCtlDefs::ESettingsToolbarButton3Cmd] = 9; |
|
79 brctlSettings[TBrCtlDefs::ESettingsToolbarButton4Cmd] = 10; |
|
80 brctlSettings[TBrCtlDefs::ESettingsToolbarButton5Cmd] = 11; |
|
81 brctlSettings[TBrCtlDefs::ESettingsToolbarButton6Cmd] = 12; |
|
82 brctlSettings[TBrCtlDefs::ESettingsToolbarButton7Cmd] = 13; |
|
83 brctlSettings[TBrCtlDefs::ESettingsScriptLog] = 0; |
|
84 |
|
85 updatePageSetting(TBrCtlDefs::ESettingsAutoLoadImages); |
|
86 updatePageSetting(TBrCtlDefs::ESettingsFontSize); |
|
87 updatePageSetting(TBrCtlDefs::ESettingsECMAScriptEnabled); |
|
88 |
|
89 updateHttpSetting(TBrCtlDefs::ESettingsEmbedded); |
|
90 updateHttpSetting(TBrCtlDefs::ESettingsCookiesEnabled); |
|
91 updateHttpSetting(TBrCtlDefs::ESettingsIMEINotifyEnabled); |
|
92 updateHttpSetting(TBrCtlDefs::ESettingsCharacterset); |
|
93 updateHttpSetting(TBrCtlDefs::ESettingsSendRefererHeader); |
|
94 updateHttpSetting(TBrCtlDefs::ESettingsSecurityWarnings); |
|
95 updateHttpSetting(TBrCtlDefs::ESettingsApId); |
|
96 updateHttpSetting(TBrCtlDefs::ESettingsAutoOpenDownloads); |
|
97 |
|
98 updateHistorySetting(TBrCtlDefs::ESettingsBackList); |
|
99 |
|
100 updateDocumentLoaderSettings(TBrCtlDefs::ESettingsCharacterset); |
|
101 } |
|
102 |
|
103 |
|
104 void SettingsContainer::setBrctlSetting(TBrCtlDefs::TBrCtlSettings setting, unsigned int value) |
|
105 { |
|
106 if (setting > TBrCtlDefs::ESettingsUnknown && setting < TBrCtlDefs::ESettingsMaxEnum) { |
|
107 brctlSettings[setting] = value; |
|
108 updatePageSetting(setting); |
|
109 updateHttpSetting(setting); |
|
110 updateHistorySetting(setting); |
|
111 updateDocumentLoaderSettings(setting); |
|
112 updateZoomSettings(setting, value); |
|
113 } |
|
114 } |
|
115 |
|
116 void SettingsContainer::updatePageSetting(TBrCtlDefs::TBrCtlSettings setting) |
|
117 { |
|
118 switch (setting) |
|
119 { |
|
120 case TBrCtlDefs::ESettingsAutoLoadImages: |
|
121 m_webView->page()->settings()->setLoadsImagesAutomatically(brctlSettings[setting]); |
|
122 break; |
|
123 case TBrCtlDefs::ESettingsFontSize: |
|
124 { |
|
125 m_webView->page()->settings()->setDefaultFontSize(textMultiplier(brctlSettings[setting], defaultFontSize)); |
|
126 // force layout on the mainframe |
|
127 Frame* mf = core(m_webView->mainFrame()); |
|
128 FrameView* v = mf->view(); |
|
129 Document* doc = mf->document(); |
|
130 if (v && doc) { |
|
131 for (Frame* f= mf; f; f = f->tree()->traverseNext(mf)) |
|
132 f->document()->recalcStyle(Node::Force); |
|
133 v->setNeedsLayout(); |
|
134 v->layout(); |
|
135 } |
|
136 break; |
|
137 } |
|
138 case TBrCtlDefs::ESettingsECMAScriptEnabled: |
|
139 m_webView->page()->settings()->setJavaScriptEnabled(brctlSettings[setting]); |
|
140 break; |
|
141 case TBrCtlDefs::ESettingsCurrentZoomLevelIndex: |
|
142 m_webView->setZoomLevel(brctlSettings[setting]); |
|
143 break; |
|
144 } |
|
145 } |
|
146 |
|
147 void SettingsContainer::updateHttpSetting(TBrCtlDefs::TBrCtlSettings setting) |
|
148 { |
|
149 HttpSessionManager* httpSessionMgr = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager(); |
|
150 switch (setting) |
|
151 { |
|
152 case TBrCtlDefs::ESettingsEmbedded: |
|
153 httpSessionMgr->setEmbedded(brctlSettings[setting]); |
|
154 break; |
|
155 case TBrCtlDefs::ESettingsCookiesEnabled: |
|
156 httpSessionMgr->enableCookies(brctlSettings[setting]); |
|
157 break; |
|
158 case TBrCtlDefs::ESettingsIMEINotifyEnabled: |
|
159 httpSessionMgr->enableImei(brctlSettings[setting]); |
|
160 break; |
|
161 case TBrCtlDefs::ESettingsCharacterset: |
|
162 httpSessionMgr->setCharset(brctlSettings[setting]); |
|
163 break; |
|
164 case TBrCtlDefs::ESettingsSendRefererHeader: |
|
165 httpSessionMgr->enableReferer(brctlSettings[setting]); |
|
166 break; |
|
167 case TBrCtlDefs::ESettingsSecurityWarnings: |
|
168 httpSessionMgr->enableSecurityDialogs(brctlSettings[setting]); |
|
169 break; |
|
170 case TBrCtlDefs::ESettingsApId: |
|
171 httpSessionMgr->setAp(brctlSettings[setting]); |
|
172 break; |
|
173 case TBrCtlDefs::ESettingsAutoOpenDownloads: |
|
174 httpSessionMgr->enableAutoOpenDownloads(brctlSettings[setting]); |
|
175 break; |
|
176 } |
|
177 } |
|
178 |
|
179 void SettingsContainer::updateHistorySetting(TBrCtlDefs::TBrCtlSettings setting) |
|
180 { |
|
181 switch (setting) |
|
182 { |
|
183 case TBrCtlDefs::ESettingsBackList: |
|
184 m_historyController->setBackListAllowed(brctlSettings[setting]); |
|
185 break; |
|
186 } |
|
187 } |
|
188 |
|
189 void SettingsContainer::updateDocumentLoaderSettings(TBrCtlDefs::TBrCtlSettings setting) |
|
190 { |
|
191 switch (setting) |
|
192 { |
|
193 case TBrCtlDefs::ESettingsCharacterset: |
|
194 { |
|
195 const TText* charset = charsetForUid(brctlSetting(TBrCtlDefs::ESettingsCharacterset)); |
|
196 TPtrC ptr(KNullDesC); |
|
197 if (charset) { |
|
198 ptr.Set(charset); |
|
199 } |
|
200 if (core(m_webView->mainFrame())->loader()->activeDocumentLoader()) { |
|
201 core(m_webView->mainFrame())->loader()->activeDocumentLoader()->setOverrideEncoding(ptr); |
|
202 } |
|
203 break; |
|
204 } |
|
205 } |
|
206 } |
|
207 |
|
208 unsigned int SettingsContainer::brctlSetting(TBrCtlDefs::TBrCtlSettings setting) |
|
209 { |
|
210 unsigned int retVal (0); |
|
211 HttpSessionManager* httpSessionMgr = WebCore::StaticObjectsContainer::instance()->resourceLoaderDelegate()->httpSessionManager(); |
|
212 switch( setting ) |
|
213 { |
|
214 case TBrCtlDefs::ESettingsSmallScreen: |
|
215 case TBrCtlDefs::ESettingsAutoLoadImages: |
|
216 case TBrCtlDefs::ESettingsEmbedded: |
|
217 case TBrCtlDefs::ESettingsTextWrapEnabled: |
|
218 case TBrCtlDefs::ESettingsCookiesEnabled: |
|
219 case TBrCtlDefs::ESettingsCSSFetchEnabled: |
|
220 case TBrCtlDefs::ESettingsECMAScriptEnabled: |
|
221 case TBrCtlDefs::ESettingsIMEINotifyEnabled: |
|
222 case TBrCtlDefs::ESettingsSecurityWarnings: |
|
223 case TBrCtlDefs::ESettingsSendRefererHeader: |
|
224 case TBrCtlDefs::ESettingsAutoRefresh: |
|
225 case TBrCtlDefs::ESettingsSmartLink: |
|
226 case TBrCtlDefs::ESettingsAutoOpenDownloads: |
|
227 case TBrCtlDefs::ESettingsDisableFlash: |
|
228 case TBrCtlDefs::ESettingsFontSize: |
|
229 case TBrCtlDefs::ESettingsCharacterset: |
|
230 case TBrCtlDefs::ESettingsLaunchAppUid: |
|
231 case TBrCtlDefs::ESettingsLaunchViewId: |
|
232 case TBrCtlDefs::ESettingsLaunchCustomMessageId: |
|
233 case TBrCtlDefs::ESettingsAutoFormFillEnabled: |
|
234 case TBrCtlDefs::ESettingsApId: |
|
235 case TBrCtlDefs::ESettingsCurrentZoomLevelIndex: |
|
236 case TBrCtlDefs::ESettingsPageOverview: |
|
237 case TBrCtlDefs::ESettingsBackList: |
|
238 case TBrCtlDefs::ESettingsToolbarOnOff: |
|
239 case TBrCtlDefs::ESettingsToolbarButton1Cmd: |
|
240 case TBrCtlDefs::ESettingsToolbarButton2Cmd: |
|
241 case TBrCtlDefs::ESettingsToolbarButton3Cmd: |
|
242 case TBrCtlDefs::ESettingsToolbarButton4Cmd: |
|
243 case TBrCtlDefs::ESettingsToolbarButton5Cmd: |
|
244 case TBrCtlDefs::ESettingsToolbarButton6Cmd: |
|
245 case TBrCtlDefs::ESettingsToolbarButton7Cmd: |
|
246 case TBrCtlDefs::ESettingsScriptLog: |
|
247 case TBrCtlDefs::ESettingsZoomLevelMin: |
|
248 case TBrCtlDefs::ESettingsZoomLevelMax: |
|
249 case TBrCtlDefs::ESettingsZoomLevelDefault: |
|
250 { |
|
251 retVal = brctlSettings[setting]; |
|
252 break; |
|
253 } |
|
254 case TBrCtlDefs::ESettingsNumOfDownloads : |
|
255 { |
|
256 retVal = httpSessionMgr->httpDownload()->numOfDownloads(); |
|
257 break; |
|
258 } |
|
259 default: |
|
260 { |
|
261 break; // should not occur |
|
262 } |
|
263 } // end of switch |
|
264 return retVal; |
|
265 |
|
266 } |
|
267 |
|
268 void SettingsContainer::updateZoomSettings(TBrCtlDefs::TBrCtlSettings setting, unsigned int value ) |
|
269 { |
|
270 m_webView->updateZoomLevel( setting, value ); |
|
271 } |