ContentSettingsAdapter.java revision 810dbede330745ea00d2d1d746d39d6e8cd3c16b
1/*
2 * Copyright (C) 2012 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.android.webview.chromium;
18
19import android.util.Log;
20import android.webkit.WebSettings.LayoutAlgorithm;
21import android.webkit.WebSettings.PluginState;
22import android.webkit.WebSettings.RenderPriority;
23import android.webkit.WebSettings.TextSize;
24import android.webkit.WebSettings.ZoomDensity;
25
26import org.chromium.content.browser.ContentSettings;
27import org.chromium.android_webview.AwSettings;
28
29public class ContentSettingsAdapter extends android.webkit.WebSettings {
30
31    private static final String TAG = ContentSettingsAdapter.class.getSimpleName();
32
33    ContentSettings mContentSettings;
34    AwSettings mAwSettings;
35
36    public ContentSettingsAdapter(ContentSettings chromeSettings, AwSettings awSettings) {
37        mContentSettings = chromeSettings;
38        mAwSettings = awSettings;
39    }
40
41    @Override
42    @Deprecated
43    public void setNavDump(boolean enabled) {
44        // Intentional no-op.
45    }
46
47    @Override
48    @Deprecated
49    public boolean getNavDump() {
50        // Intentional no-op.
51        return false;
52    }
53
54    @Override
55    public void setSupportZoom(boolean support) {
56        mContentSettings.setSupportZoom(support);
57    }
58
59    @Override
60    public boolean supportZoom() {
61        return mContentSettings.supportZoom();
62    }
63
64    @Override
65    public void setBuiltInZoomControls(boolean enabled) {
66        mContentSettings.setBuiltInZoomControls(enabled);
67    }
68
69    @Override
70    public boolean getBuiltInZoomControls() {
71        return mContentSettings.getBuiltInZoomControls();
72    }
73
74    @Override
75    public void setDisplayZoomControls(boolean enabled) {
76        mContentSettings.setDisplayZoomControls(enabled);
77    }
78
79    @Override
80    public boolean getDisplayZoomControls() {
81        return mContentSettings.getDisplayZoomControls();
82    }
83
84    @Override
85    public void setAllowFileAccess(boolean allow) {
86        mAwSettings.setAllowFileAccess(allow);
87    }
88
89    @Override
90    public boolean getAllowFileAccess() {
91        return mAwSettings.getAllowFileAccess();
92    }
93
94    @Override
95    public void setAllowContentAccess(boolean allow) {
96        mAwSettings.setAllowContentAccess(allow);
97    }
98
99    @Override
100    public boolean getAllowContentAccess() {
101        return mAwSettings.getAllowContentAccess();
102    }
103
104    @Override
105    public void setLoadWithOverviewMode(boolean overview) {
106        UnimplementedWebViewApi.invoke();
107    }
108
109    @Override
110    public boolean getLoadWithOverviewMode() {
111        UnimplementedWebViewApi.invoke();
112        return false;
113    }
114
115    @Override
116    public void setEnableSmoothTransition(boolean enable) {
117        // Intentional no-op.
118    }
119
120    @Override
121    public boolean enableSmoothTransition() {
122        // Intentional no-op.
123        return false;
124    }
125
126    @Override
127    public void setUseWebViewBackgroundForOverscrollBackground(boolean view) {
128        // Intentional no-op.
129    }
130
131    @Override
132    public boolean getUseWebViewBackgroundForOverscrollBackground() {
133        // Intentional no-op.
134        return false;
135    }
136
137    @Override
138    public void setSaveFormData(boolean save) {
139        UnimplementedWebViewApi.invoke();
140    }
141
142    @Override
143    public boolean getSaveFormData() {
144        UnimplementedWebViewApi.invoke();
145        return false;
146    }
147
148    @Override
149    public void setSavePassword(boolean save) {
150        // Intentional no-op.
151    }
152
153    @Override
154    public boolean getSavePassword() {
155        // Intentional no-op.
156        return false;
157    }
158
159    @Override
160    public synchronized void setTextZoom(int textZoom) {
161        mContentSettings.setTextZoom(textZoom);
162        if (mContentSettings.getLayoutAlgorithm() !=
163                ContentSettings.LayoutAlgorithm.TEXT_AUTOSIZING) {
164            mAwSettings.setTextZoom(textZoom);
165        }
166    }
167
168    @Override
169    public synchronized int getTextZoom() {
170        return mContentSettings.getTextZoom();
171    }
172
173    @Override
174    public void setDefaultZoom(ZoomDensity zoom) {
175        UnimplementedWebViewApi.invoke();
176    }
177
178    @Override
179    public ZoomDensity getDefaultZoom() {
180        UnimplementedWebViewApi.invoke();
181        return null;
182    }
183
184    @Override
185    public void setLightTouchEnabled(boolean enabled) {
186        // Intentional no-op.
187    }
188
189    @Override
190    public boolean getLightTouchEnabled() {
191        // Intentional no-op.
192        return false;
193    }
194
195    @Override
196    public synchronized void setUserAgent(int ua) {
197        // Minimal implementation for backwards compatibility: just supports resetting to default.
198        if (ua == 0) {
199            setUserAgentString(null);
200        } else {
201            Log.w(TAG, "setUserAgent not suported, ua=" + ua);
202        }
203    }
204
205    @Override
206    public synchronized int getUserAgent() {
207        // Minimal implementation for backwards compatibility: just identifies default vs custom.
208        return ContentSettings.getDefaultUserAgent().equals(getUserAgentString()) ? 0 : -1;
209    }
210
211    @Override
212    public synchronized void setUseWideViewPort(boolean use) {
213        mContentSettings.setUseWideViewPort(use);
214    }
215
216    @Override
217    public synchronized boolean getUseWideViewPort() {
218        return mContentSettings.getUseWideViewPort();
219    }
220
221    @Override
222    public synchronized void setSupportMultipleWindows(boolean support) {
223        mContentSettings.setSupportMultipleWindows(support);
224    }
225
226    @Override
227    public synchronized boolean supportMultipleWindows() {
228        return mContentSettings.supportMultipleWindows();
229    }
230
231    @Override
232    public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) {
233        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
234        final ContentSettings.LayoutAlgorithm[] chromiumValues = {
235            ContentSettings.LayoutAlgorithm.NORMAL,
236            ContentSettings.LayoutAlgorithm.SINGLE_COLUMN,
237            ContentSettings.LayoutAlgorithm.NARROW_COLUMNS,
238            ContentSettings.LayoutAlgorithm.TEXT_AUTOSIZING
239        };
240        mContentSettings.setLayoutAlgorithm(chromiumValues[l.ordinal()]);
241        mAwSettings.setTextZoom(l == LayoutAlgorithm.TEXT_AUTOSIZING ?
242                -1 : mContentSettings.getTextZoom());
243    }
244
245    @Override
246    public synchronized LayoutAlgorithm getLayoutAlgorithm() {
247        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
248        final LayoutAlgorithm[] webViewValues = {
249            LayoutAlgorithm.NORMAL,
250            LayoutAlgorithm.SINGLE_COLUMN,
251            LayoutAlgorithm.NARROW_COLUMNS,
252            LayoutAlgorithm.TEXT_AUTOSIZING
253        };
254        return webViewValues[mContentSettings.getLayoutAlgorithm().ordinal()];
255    }
256
257    @Override
258    public synchronized void setStandardFontFamily(String font) {
259        mContentSettings.setStandardFontFamily(font);
260    }
261
262    @Override
263    public synchronized String getStandardFontFamily() {
264        return mContentSettings.getStandardFontFamily();
265    }
266
267    @Override
268    public synchronized void setFixedFontFamily(String font) {
269        mContentSettings.setFixedFontFamily(font);
270    }
271
272    @Override
273    public synchronized String getFixedFontFamily() {
274        return mContentSettings.getFixedFontFamily();
275    }
276
277    @Override
278    public synchronized void setSansSerifFontFamily(String font) {
279        mContentSettings.setSansSerifFontFamily(font);
280    }
281
282    @Override
283    public synchronized String getSansSerifFontFamily() {
284        return mContentSettings.getSansSerifFontFamily();
285    }
286
287    @Override
288    public synchronized void setSerifFontFamily(String font) {
289        mContentSettings.setSerifFontFamily(font);
290    }
291
292    @Override
293    public synchronized String getSerifFontFamily() {
294        return mContentSettings.getSerifFontFamily();
295    }
296
297    @Override
298    public synchronized void setCursiveFontFamily(String font) {
299        mContentSettings.setCursiveFontFamily(font);
300    }
301
302    @Override
303    public synchronized String getCursiveFontFamily() {
304        return mContentSettings.getCursiveFontFamily();
305    }
306
307    @Override
308    public synchronized void setFantasyFontFamily(String font) {
309        mContentSettings.setFantasyFontFamily(font);
310    }
311
312    @Override
313    public synchronized String getFantasyFontFamily() {
314        return mContentSettings.getFantasyFontFamily();
315    }
316
317    @Override
318    public synchronized void setMinimumFontSize(int size) {
319        mContentSettings.setMinimumFontSize(size);
320    }
321
322    @Override
323    public synchronized int getMinimumFontSize() {
324        return mContentSettings.getMinimumFontSize();
325    }
326
327    @Override
328    public synchronized void setMinimumLogicalFontSize(int size) {
329        mContentSettings.setMinimumLogicalFontSize(size);
330    }
331
332    @Override
333    public synchronized int getMinimumLogicalFontSize() {
334        return mContentSettings.getMinimumLogicalFontSize();
335    }
336
337    @Override
338    public synchronized void setDefaultFontSize(int size) {
339        mContentSettings.setDefaultFontSize(size);
340    }
341
342    @Override
343    public synchronized int getDefaultFontSize() {
344        return mContentSettings.getDefaultFontSize();
345    }
346
347    @Override
348    public synchronized void setDefaultFixedFontSize(int size) {
349        mContentSettings.setDefaultFixedFontSize(size);
350    }
351
352    @Override
353    public synchronized int getDefaultFixedFontSize() {
354        return mContentSettings.getDefaultFixedFontSize();
355    }
356
357    @Override
358    public synchronized void setLoadsImagesAutomatically(boolean flag) {
359        mContentSettings.setLoadsImagesAutomatically(flag);
360    }
361
362    @Override
363    public synchronized boolean getLoadsImagesAutomatically() {
364        return mContentSettings.getLoadsImagesAutomatically();
365    }
366
367    @Override
368    public synchronized void setBlockNetworkImage(boolean flag) {
369        mContentSettings.setImagesEnabled(!flag);
370    }
371
372    @Override
373    public synchronized boolean getBlockNetworkImage() {
374        return !mContentSettings.getImagesEnabled();
375    }
376
377    @Override
378    public synchronized void setBlockNetworkLoads(boolean flag) {
379        mAwSettings.setBlockNetworkLoads(flag);
380    }
381
382    @Override
383    public synchronized boolean getBlockNetworkLoads() {
384        return mAwSettings.getBlockNetworkLoads();
385    }
386
387    @Override
388    public synchronized void setJavaScriptEnabled(boolean flag) {
389        mContentSettings.setJavaScriptEnabled(flag);
390    }
391
392    @Override
393    public void setAllowUniversalAccessFromFileURLs(boolean flag) {
394        mContentSettings.setAllowUniversalAccessFromFileURLs(flag);
395    }
396
397    @Override
398    public void setAllowFileAccessFromFileURLs(boolean flag) {
399        mContentSettings.setAllowFileAccessFromFileURLs(flag);
400    }
401
402    @Override
403    public synchronized void setPluginsEnabled(boolean flag) {
404        mContentSettings.setPluginsEnabled(flag);
405    }
406
407    @Override
408    public synchronized void setPluginState(PluginState state) {
409        mContentSettings.setPluginState(state);
410    }
411
412    @Override
413    public synchronized void setDatabasePath(String databasePath) {
414        // Intentional no-op.
415    }
416
417    @Override
418    public synchronized void setGeolocationDatabasePath(String databasePath) {
419        // Intentional no-op.
420    }
421
422    @Override
423    public synchronized void setAppCacheEnabled(boolean flag) {
424        mContentSettings.setAppCacheEnabled(flag);
425    }
426
427    @Override
428    public synchronized void setAppCachePath(String appCachePath) {
429        mContentSettings.setAppCachePath(appCachePath);
430    }
431
432    @Override
433    public synchronized void setAppCacheMaxSize(long appCacheMaxSize) {
434        UnimplementedWebViewApi.invoke();
435    }
436
437    @Override
438    public synchronized void setDatabaseEnabled(boolean flag) {
439        mContentSettings.setDatabaseEnabled(flag);
440    }
441
442    @Override
443    public synchronized void setDomStorageEnabled(boolean flag) {
444        mContentSettings.setDomStorageEnabled(flag);
445    }
446
447    @Override
448    public synchronized boolean getDomStorageEnabled() {
449        return mContentSettings.getDomStorageEnabled();
450    }
451
452    @Override
453    public synchronized String getDatabasePath() {
454        // Intentional no-op.
455        return "";
456    }
457
458    @Override
459    public synchronized boolean getDatabaseEnabled() {
460        return mContentSettings.getDatabaseEnabled();
461    }
462
463    @Override
464    public synchronized void setGeolocationEnabled(boolean flag) {
465        mAwSettings.setGeolocationEnabled(flag);
466    }
467
468    @Override
469    public synchronized boolean getJavaScriptEnabled() {
470        return mContentSettings.getJavaScriptEnabled();
471    }
472
473    @Override
474    public boolean getAllowUniversalAccessFromFileURLs() {
475        return mContentSettings.getAllowUniversalAccessFromFileURLs();
476    }
477
478    @Override
479    public boolean getAllowFileAccessFromFileURLs() {
480        return mContentSettings.getAllowFileAccessFromFileURLs();
481    }
482
483    @Override
484    public synchronized boolean getPluginsEnabled() {
485        return mContentSettings.getPluginsEnabled();
486    }
487
488    @Override
489    public synchronized PluginState getPluginState() {
490        return mContentSettings.getPluginState();
491    }
492
493    @Override
494    public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) {
495        mContentSettings.setJavaScriptCanOpenWindowsAutomatically(flag);
496    }
497
498    @Override
499    public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() {
500        return mContentSettings.getJavaScriptCanOpenWindowsAutomatically();
501    }
502
503    @Override
504    public synchronized void setDefaultTextEncodingName(String encoding) {
505        mContentSettings.setDefaultTextEncodingName(encoding);
506    }
507
508    @Override
509    public synchronized String getDefaultTextEncodingName() {
510        return mContentSettings.getDefaultTextEncodingName();
511    }
512
513    @Override
514    public synchronized void setUserAgentString(String ua) {
515        mContentSettings.setUserAgentString(ua);
516    }
517
518    @Override
519    public synchronized String getUserAgentString() {
520        return mContentSettings.getUserAgentString();
521    }
522
523    @Override
524    public void setNeedInitialFocus(boolean flag) {
525        mAwSettings.setShouldFocusFirstNode(flag);
526    }
527
528    @Override
529    public synchronized void setRenderPriority(RenderPriority priority) {
530        // Intentional no-op.
531    }
532
533    @Override
534    public void setCacheMode(int mode) {
535        mAwSettings.setCacheMode(mode);
536    }
537
538    @Override
539    public int getCacheMode() {
540        return mAwSettings.getCacheMode();
541    }
542}
543