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