ContentSettingsAdapter.java revision d97646176837536731ca7747dfdf506482c853c7
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        // See https://bugs.webkit.org/show_bug.cgi?id=111154. The settings need to be changed
214        // together. Also see b/8296421 about making AwSettings the single entry point for
215        // settings.
216        mContentSettings.setUseWideViewPort(use);
217        mAwSettings.setEnableFixedLayoutMode(use);
218    }
219
220    @Override
221    public synchronized boolean getUseWideViewPort() {
222        return mContentSettings.getUseWideViewPort();
223    }
224
225    @Override
226    public synchronized void setSupportMultipleWindows(boolean support) {
227        mContentSettings.setSupportMultipleWindows(support);
228    }
229
230    @Override
231    public synchronized boolean supportMultipleWindows() {
232        return mContentSettings.supportMultipleWindows();
233    }
234
235    @Override
236    public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) {
237        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
238        final ContentSettings.LayoutAlgorithm[] chromiumValues = {
239            ContentSettings.LayoutAlgorithm.NORMAL,
240            ContentSettings.LayoutAlgorithm.SINGLE_COLUMN,
241            ContentSettings.LayoutAlgorithm.NARROW_COLUMNS,
242            ContentSettings.LayoutAlgorithm.TEXT_AUTOSIZING
243        };
244        mContentSettings.setLayoutAlgorithm(chromiumValues[l.ordinal()]);
245        mAwSettings.setTextZoom(l == LayoutAlgorithm.TEXT_AUTOSIZING ?
246                -1 : mContentSettings.getTextZoom());
247    }
248
249    @Override
250    public synchronized LayoutAlgorithm getLayoutAlgorithm() {
251        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
252        final LayoutAlgorithm[] webViewValues = {
253            LayoutAlgorithm.NORMAL,
254            LayoutAlgorithm.SINGLE_COLUMN,
255            LayoutAlgorithm.NARROW_COLUMNS,
256            LayoutAlgorithm.TEXT_AUTOSIZING
257        };
258        return webViewValues[mContentSettings.getLayoutAlgorithm().ordinal()];
259    }
260
261    @Override
262    public synchronized void setStandardFontFamily(String font) {
263        mContentSettings.setStandardFontFamily(font);
264    }
265
266    @Override
267    public synchronized String getStandardFontFamily() {
268        return mContentSettings.getStandardFontFamily();
269    }
270
271    @Override
272    public synchronized void setFixedFontFamily(String font) {
273        mContentSettings.setFixedFontFamily(font);
274    }
275
276    @Override
277    public synchronized String getFixedFontFamily() {
278        return mContentSettings.getFixedFontFamily();
279    }
280
281    @Override
282    public synchronized void setSansSerifFontFamily(String font) {
283        mContentSettings.setSansSerifFontFamily(font);
284    }
285
286    @Override
287    public synchronized String getSansSerifFontFamily() {
288        return mContentSettings.getSansSerifFontFamily();
289    }
290
291    @Override
292    public synchronized void setSerifFontFamily(String font) {
293        mContentSettings.setSerifFontFamily(font);
294    }
295
296    @Override
297    public synchronized String getSerifFontFamily() {
298        return mContentSettings.getSerifFontFamily();
299    }
300
301    @Override
302    public synchronized void setCursiveFontFamily(String font) {
303        mContentSettings.setCursiveFontFamily(font);
304    }
305
306    @Override
307    public synchronized String getCursiveFontFamily() {
308        return mContentSettings.getCursiveFontFamily();
309    }
310
311    @Override
312    public synchronized void setFantasyFontFamily(String font) {
313        mContentSettings.setFantasyFontFamily(font);
314    }
315
316    @Override
317    public synchronized String getFantasyFontFamily() {
318        return mContentSettings.getFantasyFontFamily();
319    }
320
321    @Override
322    public synchronized void setMinimumFontSize(int size) {
323        mContentSettings.setMinimumFontSize(size);
324    }
325
326    @Override
327    public synchronized int getMinimumFontSize() {
328        return mContentSettings.getMinimumFontSize();
329    }
330
331    @Override
332    public synchronized void setMinimumLogicalFontSize(int size) {
333        mContentSettings.setMinimumLogicalFontSize(size);
334    }
335
336    @Override
337    public synchronized int getMinimumLogicalFontSize() {
338        return mContentSettings.getMinimumLogicalFontSize();
339    }
340
341    @Override
342    public synchronized void setDefaultFontSize(int size) {
343        mContentSettings.setDefaultFontSize(size);
344    }
345
346    @Override
347    public synchronized int getDefaultFontSize() {
348        return mContentSettings.getDefaultFontSize();
349    }
350
351    @Override
352    public synchronized void setDefaultFixedFontSize(int size) {
353        mContentSettings.setDefaultFixedFontSize(size);
354    }
355
356    @Override
357    public synchronized int getDefaultFixedFontSize() {
358        return mContentSettings.getDefaultFixedFontSize();
359    }
360
361    @Override
362    public synchronized void setLoadsImagesAutomatically(boolean flag) {
363        mContentSettings.setLoadsImagesAutomatically(flag);
364    }
365
366    @Override
367    public synchronized boolean getLoadsImagesAutomatically() {
368        return mContentSettings.getLoadsImagesAutomatically();
369    }
370
371    @Override
372    public synchronized void setBlockNetworkImage(boolean flag) {
373        mContentSettings.setImagesEnabled(!flag);
374    }
375
376    @Override
377    public synchronized boolean getBlockNetworkImage() {
378        return !mContentSettings.getImagesEnabled();
379    }
380
381    @Override
382    public synchronized void setBlockNetworkLoads(boolean flag) {
383        mAwSettings.setBlockNetworkLoads(flag);
384    }
385
386    @Override
387    public synchronized boolean getBlockNetworkLoads() {
388        return mAwSettings.getBlockNetworkLoads();
389    }
390
391    @Override
392    public synchronized void setJavaScriptEnabled(boolean flag) {
393        mContentSettings.setJavaScriptEnabled(flag);
394    }
395
396    @Override
397    public void setAllowUniversalAccessFromFileURLs(boolean flag) {
398        mContentSettings.setAllowUniversalAccessFromFileURLs(flag);
399    }
400
401    @Override
402    public void setAllowFileAccessFromFileURLs(boolean flag) {
403        mContentSettings.setAllowFileAccessFromFileURLs(flag);
404    }
405
406    @Override
407    public synchronized void setPluginsEnabled(boolean flag) {
408        mContentSettings.setPluginsEnabled(flag);
409    }
410
411    @Override
412    public synchronized void setPluginState(PluginState state) {
413        mContentSettings.setPluginState(state);
414    }
415
416    @Override
417    public synchronized void setDatabasePath(String databasePath) {
418        // Intentional no-op.
419    }
420
421    @Override
422    public synchronized void setGeolocationDatabasePath(String databasePath) {
423        // Intentional no-op.
424    }
425
426    @Override
427    public synchronized void setAppCacheEnabled(boolean flag) {
428        mContentSettings.setAppCacheEnabled(flag);
429    }
430
431    @Override
432    public synchronized void setAppCachePath(String appCachePath) {
433        mContentSettings.setAppCachePath(appCachePath);
434    }
435
436    @Override
437    public synchronized void setAppCacheMaxSize(long appCacheMaxSize) {
438        // Intentional no-op.
439    }
440
441    @Override
442    public synchronized void setDatabaseEnabled(boolean flag) {
443        mContentSettings.setDatabaseEnabled(flag);
444    }
445
446    @Override
447    public synchronized void setDomStorageEnabled(boolean flag) {
448        mContentSettings.setDomStorageEnabled(flag);
449    }
450
451    @Override
452    public synchronized boolean getDomStorageEnabled() {
453        return mContentSettings.getDomStorageEnabled();
454    }
455
456    @Override
457    public synchronized String getDatabasePath() {
458        // Intentional no-op.
459        return "";
460    }
461
462    @Override
463    public synchronized boolean getDatabaseEnabled() {
464        return mContentSettings.getDatabaseEnabled();
465    }
466
467    @Override
468    public synchronized void setGeolocationEnabled(boolean flag) {
469        mAwSettings.setGeolocationEnabled(flag);
470    }
471
472    @Override
473    public synchronized boolean getJavaScriptEnabled() {
474        return mContentSettings.getJavaScriptEnabled();
475    }
476
477    @Override
478    public boolean getAllowUniversalAccessFromFileURLs() {
479        return mContentSettings.getAllowUniversalAccessFromFileURLs();
480    }
481
482    @Override
483    public boolean getAllowFileAccessFromFileURLs() {
484        return mContentSettings.getAllowFileAccessFromFileURLs();
485    }
486
487    @Override
488    public synchronized boolean getPluginsEnabled() {
489        return mContentSettings.getPluginsEnabled();
490    }
491
492    @Override
493    public synchronized PluginState getPluginState() {
494        return mContentSettings.getPluginState();
495    }
496
497    @Override
498    public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) {
499        mContentSettings.setJavaScriptCanOpenWindowsAutomatically(flag);
500    }
501
502    @Override
503    public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() {
504        return mContentSettings.getJavaScriptCanOpenWindowsAutomatically();
505    }
506
507    @Override
508    public synchronized void setDefaultTextEncodingName(String encoding) {
509        mContentSettings.setDefaultTextEncodingName(encoding);
510    }
511
512    @Override
513    public synchronized String getDefaultTextEncodingName() {
514        return mContentSettings.getDefaultTextEncodingName();
515    }
516
517    @Override
518    public synchronized void setUserAgentString(String ua) {
519        mContentSettings.setUserAgentString(ua);
520    }
521
522    @Override
523    public synchronized String getUserAgentString() {
524        return mContentSettings.getUserAgentString();
525    }
526
527    @Override
528    public void setNeedInitialFocus(boolean flag) {
529        mAwSettings.setShouldFocusFirstNode(flag);
530    }
531
532    @Override
533    public synchronized void setRenderPriority(RenderPriority priority) {
534        // Intentional no-op.
535    }
536
537    @Override
538    public void setCacheMode(int mode) {
539        mAwSettings.setCacheMode(mode);
540    }
541
542    @Override
543    public int getCacheMode() {
544        return mAwSettings.getCacheMode();
545    }
546}
547