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