ContentSettingsAdapter.java revision 4a2dbffec6475c4685eafcc83e7a4a03d6c1bdcd
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
29// BUG(8296421): We must get rid of paired calls to ContentSettings and AwSettings,
30// making AwSettings a single entry point.
31public class ContentSettingsAdapter extends android.webkit.WebSettings {
32
33    private static final String TAG = ContentSettingsAdapter.class.getSimpleName();
34
35    ContentSettings mContentSettings;
36    AwSettings mAwSettings;
37
38    public ContentSettingsAdapter(ContentSettings chromeSettings, AwSettings awSettings) {
39        mContentSettings = chromeSettings;
40        mAwSettings = awSettings;
41    }
42
43    @Override
44    @Deprecated
45    public void setNavDump(boolean enabled) {
46        // Intentional no-op.
47    }
48
49    @Override
50    @Deprecated
51    public boolean getNavDump() {
52        // Intentional no-op.
53        return false;
54    }
55
56    @Override
57    public void setSupportZoom(boolean support) {
58        mContentSettings.setSupportZoom(support);
59    }
60
61    @Override
62    public boolean supportZoom() {
63        return mContentSettings.supportZoom();
64    }
65
66    @Override
67    public void setBuiltInZoomControls(boolean enabled) {
68        mContentSettings.setBuiltInZoomControls(enabled);
69    }
70
71    @Override
72    public boolean getBuiltInZoomControls() {
73        return mContentSettings.getBuiltInZoomControls();
74    }
75
76    @Override
77    public void setDisplayZoomControls(boolean enabled) {
78        mContentSettings.setDisplayZoomControls(enabled);
79    }
80
81    @Override
82    public boolean getDisplayZoomControls() {
83        return mContentSettings.getDisplayZoomControls();
84    }
85
86    @Override
87    public void setAllowFileAccess(boolean allow) {
88        mAwSettings.setAllowFileAccess(allow);
89    }
90
91    @Override
92    public boolean getAllowFileAccess() {
93        return mAwSettings.getAllowFileAccess();
94    }
95
96    @Override
97    public void setAllowContentAccess(boolean allow) {
98        mAwSettings.setAllowContentAccess(allow);
99    }
100
101    @Override
102    public boolean getAllowContentAccess() {
103        return mAwSettings.getAllowContentAccess();
104    }
105
106    @Override
107    public void setLoadWithOverviewMode(boolean overview) {
108        if (overview != mContentSettings.getLoadWithOverviewMode()) {
109            mContentSettings.setLoadWithOverviewMode(overview);
110            mAwSettings.resetScrollAndScaleState();
111        }
112    }
113
114    @Override
115    public boolean getLoadWithOverviewMode() {
116        return mContentSettings.getLoadWithOverviewMode();
117    }
118
119    @Override
120    public void setEnableSmoothTransition(boolean enable) {
121        // Intentional no-op.
122    }
123
124    @Override
125    public boolean enableSmoothTransition() {
126        // Intentional no-op.
127        return false;
128    }
129
130    @Override
131    public void setUseWebViewBackgroundForOverscrollBackground(boolean view) {
132        // Intentional no-op.
133    }
134
135    @Override
136    public boolean getUseWebViewBackgroundForOverscrollBackground() {
137        // Intentional no-op.
138        return false;
139    }
140
141    @Override
142    public void setSaveFormData(boolean save) {
143        UnimplementedWebViewApi.invoke();
144    }
145
146    @Override
147    public boolean getSaveFormData() {
148        UnimplementedWebViewApi.invoke();
149        return false;
150    }
151
152    @Override
153    public void setSavePassword(boolean save) {
154        // Intentional no-op.
155    }
156
157    @Override
158    public boolean getSavePassword() {
159        // Intentional no-op.
160        return false;
161    }
162
163    @Override
164    public synchronized void setTextZoom(int textZoom) {
165        mContentSettings.setTextZoom(textZoom);
166        if (mContentSettings.getLayoutAlgorithm() !=
167                ContentSettings.LayoutAlgorithm.TEXT_AUTOSIZING) {
168            mAwSettings.setTextZoom(textZoom);
169        }
170    }
171
172    @Override
173    public synchronized int getTextZoom() {
174        return mContentSettings.getTextZoom();
175    }
176
177    @Override
178    public void setDefaultZoom(ZoomDensity zoom) {
179        UnimplementedWebViewApi.invoke();
180    }
181
182    @Override
183    public ZoomDensity getDefaultZoom() {
184        UnimplementedWebViewApi.invoke();
185        return null;
186    }
187
188    @Override
189    public void setLightTouchEnabled(boolean enabled) {
190        // Intentional no-op.
191    }
192
193    @Override
194    public boolean getLightTouchEnabled() {
195        // Intentional no-op.
196        return false;
197    }
198
199    @Override
200    public synchronized void setUserAgent(int ua) {
201        // Minimal implementation for backwards compatibility: just supports resetting to default.
202        if (ua == 0) {
203            setUserAgentString(null);
204        } else {
205            Log.w(TAG, "setUserAgent not suported, ua=" + ua);
206        }
207    }
208
209    @Override
210    public synchronized int getUserAgent() {
211        // Minimal implementation for backwards compatibility: just identifies default vs custom.
212        return ContentSettings.getDefaultUserAgent().equals(getUserAgentString()) ? 0 : -1;
213    }
214
215    @Override
216    public synchronized void setUseWideViewPort(boolean use) {
217        mContentSettings.setUseWideViewPort(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