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