ContentSettingsAdapter.java revision 94fff0308975ad0d5b19c744d4b3a5a700692638
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    }
163
164    @Override
165    public synchronized int getTextZoom() {
166        return mContentSettings.getTextZoom();
167    }
168
169    @Override
170    public void setDefaultZoom(ZoomDensity zoom) {
171        UnimplementedWebViewApi.invoke();
172    }
173
174    @Override
175    public ZoomDensity getDefaultZoom() {
176        UnimplementedWebViewApi.invoke();
177        return null;
178    }
179
180    @Override
181    public void setLightTouchEnabled(boolean enabled) {
182        // Intentional no-op.
183    }
184
185    @Override
186    public boolean getLightTouchEnabled() {
187        // Intentional no-op.
188        return false;
189    }
190
191    @Override
192    public synchronized void setUserAgent(int ua) {
193        // Minimal implementation for backwards compatibility: just supports resetting to default.
194        if (ua == 0) {
195            setUserAgentString(null);
196        } else {
197            Log.w(TAG, "setUserAgent not suported, ua=" + ua);
198        }
199    }
200
201    @Override
202    public synchronized int getUserAgent() {
203        // Minimal implementation for backwards compatibility: just identifies default vs custom.
204        return ContentSettings.getDefaultUserAgent().equals(getUserAgentString()) ? 0 : -1;
205    }
206
207    @Override
208    public synchronized void setUseWideViewPort(boolean use) {
209        mContentSettings.setUseWideViewPort(use);
210    }
211
212    @Override
213    public synchronized boolean getUseWideViewPort() {
214        return mContentSettings.getUseWideViewPort();
215    }
216
217    @Override
218    public synchronized void setSupportMultipleWindows(boolean support) {
219        mContentSettings.setSupportMultipleWindows(support);
220    }
221
222    @Override
223    public synchronized boolean supportMultipleWindows() {
224        return mContentSettings.supportMultipleWindows();
225    }
226
227    @Override
228    public synchronized void setLayoutAlgorithm(LayoutAlgorithm l) {
229        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
230        final ContentSettings.LayoutAlgorithm[] chromiumValues = {
231            ContentSettings.LayoutAlgorithm.NORMAL,
232            ContentSettings.LayoutAlgorithm.SINGLE_COLUMN,
233            ContentSettings.LayoutAlgorithm.NARROW_COLUMNS,
234            ContentSettings.LayoutAlgorithm.TEXT_AUTOSIZING
235        };
236        mContentSettings.setLayoutAlgorithm(chromiumValues[l.ordinal()]);
237    }
238
239    @Override
240    public synchronized LayoutAlgorithm getLayoutAlgorithm() {
241        // TODO: Remove the upstream enum and mapping once the new value is in the public API.
242        final LayoutAlgorithm[] webViewValues = {
243            LayoutAlgorithm.NORMAL,
244            LayoutAlgorithm.SINGLE_COLUMN,
245            LayoutAlgorithm.NARROW_COLUMNS,
246            LayoutAlgorithm.TEXT_AUTOSIZING
247        };
248        return webViewValues[mContentSettings.getLayoutAlgorithm().ordinal()];
249    }
250
251    @Override
252    public synchronized void setStandardFontFamily(String font) {
253        mContentSettings.setStandardFontFamily(font);
254    }
255
256    @Override
257    public synchronized String getStandardFontFamily() {
258        return mContentSettings.getStandardFontFamily();
259    }
260
261    @Override
262    public synchronized void setFixedFontFamily(String font) {
263        mContentSettings.setFixedFontFamily(font);
264    }
265
266    @Override
267    public synchronized String getFixedFontFamily() {
268        return mContentSettings.getFixedFontFamily();
269    }
270
271    @Override
272    public synchronized void setSansSerifFontFamily(String font) {
273        mContentSettings.setSansSerifFontFamily(font);
274    }
275
276    @Override
277    public synchronized String getSansSerifFontFamily() {
278        return mContentSettings.getSansSerifFontFamily();
279    }
280
281    @Override
282    public synchronized void setSerifFontFamily(String font) {
283        mContentSettings.setSerifFontFamily(font);
284    }
285
286    @Override
287    public synchronized String getSerifFontFamily() {
288        return mContentSettings.getSerifFontFamily();
289    }
290
291    @Override
292    public synchronized void setCursiveFontFamily(String font) {
293        mContentSettings.setCursiveFontFamily(font);
294    }
295
296    @Override
297    public synchronized String getCursiveFontFamily() {
298        return mContentSettings.getCursiveFontFamily();
299    }
300
301    @Override
302    public synchronized void setFantasyFontFamily(String font) {
303        mContentSettings.setFantasyFontFamily(font);
304    }
305
306    @Override
307    public synchronized String getFantasyFontFamily() {
308        return mContentSettings.getFantasyFontFamily();
309    }
310
311    @Override
312    public synchronized void setMinimumFontSize(int size) {
313        mContentSettings.setMinimumFontSize(size);
314    }
315
316    @Override
317    public synchronized int getMinimumFontSize() {
318        return mContentSettings.getMinimumFontSize();
319    }
320
321    @Override
322    public synchronized void setMinimumLogicalFontSize(int size) {
323        mContentSettings.setMinimumLogicalFontSize(size);
324    }
325
326    @Override
327    public synchronized int getMinimumLogicalFontSize() {
328        return mContentSettings.getMinimumLogicalFontSize();
329    }
330
331    @Override
332    public synchronized void setDefaultFontSize(int size) {
333        mContentSettings.setDefaultFontSize(size);
334    }
335
336    @Override
337    public synchronized int getDefaultFontSize() {
338        return mContentSettings.getDefaultFontSize();
339    }
340
341    @Override
342    public synchronized void setDefaultFixedFontSize(int size) {
343        mContentSettings.setDefaultFixedFontSize(size);
344    }
345
346    @Override
347    public synchronized int getDefaultFixedFontSize() {
348        return mContentSettings.getDefaultFixedFontSize();
349    }
350
351    @Override
352    public synchronized void setLoadsImagesAutomatically(boolean flag) {
353        mContentSettings.setLoadsImagesAutomatically(flag);
354    }
355
356    @Override
357    public synchronized boolean getLoadsImagesAutomatically() {
358        return mContentSettings.getLoadsImagesAutomatically();
359    }
360
361    @Override
362    public synchronized void setBlockNetworkImage(boolean flag) {
363        mContentSettings.setImagesEnabled(!flag);
364    }
365
366    @Override
367    public synchronized boolean getBlockNetworkImage() {
368        return !mContentSettings.getImagesEnabled();
369    }
370
371    @Override
372    public synchronized void setBlockNetworkLoads(boolean flag) {
373        mAwSettings.setBlockNetworkLoads(flag);
374    }
375
376    @Override
377    public synchronized boolean getBlockNetworkLoads() {
378        return mAwSettings.getBlockNetworkLoads();
379    }
380
381    @Override
382    public synchronized void setJavaScriptEnabled(boolean flag) {
383        mContentSettings.setJavaScriptEnabled(flag);
384    }
385
386    @Override
387    public void setAllowUniversalAccessFromFileURLs(boolean flag) {
388        mContentSettings.setAllowUniversalAccessFromFileURLs(flag);
389    }
390
391    @Override
392    public void setAllowFileAccessFromFileURLs(boolean flag) {
393        mContentSettings.setAllowFileAccessFromFileURLs(flag);
394    }
395
396    @Override
397    public synchronized void setPluginsEnabled(boolean flag) {
398        mContentSettings.setPluginsEnabled(flag);
399    }
400
401    @Override
402    public synchronized void setPluginState(PluginState state) {
403        mContentSettings.setPluginState(state);
404    }
405
406    @Override
407    public synchronized void setDatabasePath(String databasePath) {
408        UnimplementedWebViewApi.invoke();
409    }
410
411    @Override
412    public synchronized void setGeolocationDatabasePath(String databasePath) {
413        // Intentional no-op.
414    }
415
416    @Override
417    public synchronized void setAppCacheEnabled(boolean flag) {
418        mContentSettings.setAppCacheEnabled(flag);
419    }
420
421    @Override
422    public synchronized void setAppCachePath(String appCachePath) {
423        mContentSettings.setAppCachePath(appCachePath);
424    }
425
426    @Override
427    public synchronized void setAppCacheMaxSize(long appCacheMaxSize) {
428        UnimplementedWebViewApi.invoke();
429    }
430
431    @Override
432    public synchronized void setDatabaseEnabled(boolean flag) {
433        UnimplementedWebViewApi.invoke();
434    }
435
436    @Override
437    public synchronized void setDomStorageEnabled(boolean flag) {
438        UnimplementedWebViewApi.invoke();
439    }
440
441    @Override
442    public synchronized boolean getDomStorageEnabled() {
443        UnimplementedWebViewApi.invoke();
444        return false;
445    }
446
447    @Override
448    public synchronized String getDatabasePath() {
449        UnimplementedWebViewApi.invoke();
450        return null;
451    }
452
453    @Override
454    public synchronized boolean getDatabaseEnabled() {
455        UnimplementedWebViewApi.invoke();
456        return false;
457    }
458
459    @Override
460    public synchronized void setGeolocationEnabled(boolean flag) {
461        UnimplementedWebViewApi.invoke();
462    }
463
464    @Override
465    public synchronized boolean getJavaScriptEnabled() {
466        return mContentSettings.getJavaScriptEnabled();
467    }
468
469    @Override
470    public boolean getAllowUniversalAccessFromFileURLs() {
471        return mContentSettings.getAllowUniversalAccessFromFileURLs();
472    }
473
474    @Override
475    public boolean getAllowFileAccessFromFileURLs() {
476        return mContentSettings.getAllowFileAccessFromFileURLs();
477    }
478
479    @Override
480    public synchronized boolean getPluginsEnabled() {
481        return mContentSettings.getPluginsEnabled();
482    }
483
484    @Override
485    public synchronized PluginState getPluginState() {
486        return mContentSettings.getPluginState();
487    }
488
489    @Override
490    public synchronized void setJavaScriptCanOpenWindowsAutomatically(boolean flag) {
491        mContentSettings.setJavaScriptCanOpenWindowsAutomatically(flag);
492    }
493
494    @Override
495    public synchronized boolean getJavaScriptCanOpenWindowsAutomatically() {
496        return mContentSettings.getJavaScriptCanOpenWindowsAutomatically();
497    }
498
499    @Override
500    public synchronized void setDefaultTextEncodingName(String encoding) {
501        mContentSettings.setDefaultTextEncodingName(encoding);
502    }
503
504    @Override
505    public synchronized String getDefaultTextEncodingName() {
506        return mContentSettings.getDefaultTextEncodingName();
507    }
508
509    @Override
510    public synchronized void setUserAgentString(String ua) {
511        mContentSettings.setUserAgentString(ua);
512    }
513
514    @Override
515    public synchronized String getUserAgentString() {
516        return mContentSettings.getUserAgentString();
517    }
518
519    @Override
520    public void setNeedInitialFocus(boolean flag) {
521        mAwSettings.setShouldFocusFirstNode(flag);
522    }
523
524    @Override
525    public synchronized void setRenderPriority(RenderPriority priority) {
526        UnimplementedWebViewApi.invoke();
527    }
528
529    @Override
530    public void setCacheMode(int mode) {
531        mAwSettings.setCacheMode(mode);
532    }
533
534    @Override
535    public int getCacheMode() {
536        return mAwSettings.getCacheMode();
537    }
538}
539