| Index: components/html_viewer/blink_settings_impl.cc
|
| diff --git a/components/html_viewer/blink_settings_impl.cc b/components/html_viewer/blink_settings_impl.cc
|
| deleted file mode 100644
|
| index c7c495dde558098e9e551c4557e3b9c0b1608f41..0000000000000000000000000000000000000000
|
| --- a/components/html_viewer/blink_settings_impl.cc
|
| +++ /dev/null
|
| @@ -1,427 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "components/html_viewer/blink_settings_impl.h"
|
| -
|
| -#include <stdint.h>
|
| -
|
| -#include "base/command_line.h"
|
| -#include "build/build_config.h"
|
| -#include "components/html_viewer/web_preferences.h"
|
| -#include "third_party/WebKit/public/platform/WebString.h"
|
| -#include "third_party/WebKit/public/web/WebNetworkStateNotifier.h"
|
| -#include "third_party/WebKit/public/web/WebRuntimeFeatures.h"
|
| -#include "third_party/WebKit/public/web/WebSettings.h"
|
| -#include "third_party/WebKit/public/web/WebView.h"
|
| -#include "third_party/icu/source/common/unicode/uchar.h"
|
| -#include "third_party/icu/source/common/unicode/uscript.h"
|
| -#include "ui/base/touch/touch_device.h"
|
| -#include "ui/base/ui_base_switches_util.h"
|
| -#include "ui/gfx/font_render_params.h"
|
| -
|
| -#if defined(OS_ANDROID)
|
| -#include "url/gurl.h"
|
| -#endif
|
| -
|
| -#if defined(OS_LINUX)
|
| -#include "third_party/WebKit/public/web/linux/WebFontRendering.h"
|
| -#endif
|
| -
|
| -namespace html_viewer {
|
| -
|
| -// TODO(rjkroege): Update this code once http://crbug.com/481108 has been
|
| -// completed and the WebSettings parameter space has been reduced.
|
| -//
|
| -// The code inside the anonymous namespace has been copied from content
|
| -// and is largely unchanged here. My assumption is that this is a
|
| -// temporary measure until 481108 is resolved.
|
| -namespace {
|
| -
|
| -// Command line switch string to disable experimental WebGL.
|
| -const char kDisableWebGLSwitch[] = "disable-webgl";
|
| -
|
| -blink::WebConnectionType NetConnectionTypeToWebConnectionType(
|
| - net::NetworkChangeNotifier::ConnectionType net_type) {
|
| - switch (net_type) {
|
| - case net::NetworkChangeNotifier::CONNECTION_UNKNOWN:
|
| - return blink::WebConnectionTypeUnknown;
|
| - case net::NetworkChangeNotifier::CONNECTION_ETHERNET:
|
| - return blink::WebConnectionTypeEthernet;
|
| - case net::NetworkChangeNotifier::CONNECTION_WIFI:
|
| - return blink::WebConnectionTypeWifi;
|
| - case net::NetworkChangeNotifier::CONNECTION_NONE:
|
| - return blink::WebConnectionTypeNone;
|
| - case net::NetworkChangeNotifier::CONNECTION_2G:
|
| - return blink::WebConnectionTypeCellular2G;
|
| - case net::NetworkChangeNotifier::CONNECTION_3G:
|
| - return blink::WebConnectionTypeCellular3G;
|
| - case net::NetworkChangeNotifier::CONNECTION_4G:
|
| - return blink::WebConnectionTypeCellular4G;
|
| - case net::NetworkChangeNotifier::CONNECTION_BLUETOOTH:
|
| - return blink::WebConnectionTypeBluetooth;
|
| - }
|
| - NOTREACHED();
|
| - return blink::WebConnectionTypeNone;
|
| -}
|
| -
|
| -typedef void (*SetFontFamilyWrapper)(blink::WebSettings*,
|
| - const base::string16&,
|
| - UScriptCode);
|
| -
|
| -// If |scriptCode| is a member of a family of "similar" script codes, returns
|
| -// the script code in that family that is used by WebKit for font selection
|
| -// purposes. For example, USCRIPT_KATAKANA_OR_HIRAGANA and USCRIPT_JAPANESE are
|
| -// considered equivalent for the purposes of font selection. WebKit uses the
|
| -// script code USCRIPT_KATAKANA_OR_HIRAGANA. So, if |scriptCode| is
|
| -// USCRIPT_JAPANESE, the function returns USCRIPT_KATAKANA_OR_HIRAGANA. WebKit
|
| -// uses different scripts than the ones in Chrome pref names because the version
|
| -// of ICU included on certain ports does not have some of the newer scripts. If
|
| -// |scriptCode| is not a member of such a family, returns |scriptCode|.
|
| -UScriptCode GetScriptForWebSettings(UScriptCode scriptCode) {
|
| - switch (scriptCode) {
|
| - case USCRIPT_HIRAGANA:
|
| - case USCRIPT_KATAKANA:
|
| - case USCRIPT_JAPANESE:
|
| - return USCRIPT_KATAKANA_OR_HIRAGANA;
|
| - case USCRIPT_KOREAN:
|
| - return USCRIPT_HANGUL;
|
| - default:
|
| - return scriptCode;
|
| - }
|
| -}
|
| -
|
| -void SetStandardFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setStandardFontFamily(font, script);
|
| -}
|
| -
|
| -void SetFixedFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setFixedFontFamily(font, script);
|
| -}
|
| -
|
| -void SetSerifFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setSerifFontFamily(font, script);
|
| -}
|
| -
|
| -void SetSansSerifFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setSansSerifFontFamily(font, script);
|
| -}
|
| -
|
| -void SetCursiveFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setCursiveFontFamily(font, script);
|
| -}
|
| -
|
| -void SetFantasyFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setFantasyFontFamily(font, script);
|
| -}
|
| -
|
| -void SetPictographFontFamilyWrapper(blink::WebSettings* settings,
|
| - const base::string16& font,
|
| - UScriptCode script) {
|
| - settings->setPictographFontFamily(font, script);
|
| -}
|
| -
|
| -void ApplyFontsFromMap(const ScriptFontFamilyMap& map,
|
| - SetFontFamilyWrapper setter,
|
| - blink::WebSettings* settings) {
|
| - for (ScriptFontFamilyMap::const_iterator it = map.begin(); it != map.end();
|
| - ++it) {
|
| - int32_t script = u_getPropertyValueEnum(UCHAR_SCRIPT, (it->first).c_str());
|
| - if (script >= 0 && script < USCRIPT_CODE_LIMIT) {
|
| - UScriptCode code = static_cast<UScriptCode>(script);
|
| - (*setter)(settings, it->second, GetScriptForWebSettings(code));
|
| - }
|
| - }
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void BlinkSettingsImpl::ApplySettings(blink::WebView* web_view,
|
| - const WebPreferences& prefs) const {
|
| - blink::WebSettings* settings = web_view->settings();
|
| -
|
| - ApplyFontsFromMap(prefs.standard_font_family_map,
|
| - SetStandardFontFamilyWrapper, settings);
|
| - ApplyFontsFromMap(prefs.fixed_font_family_map, SetFixedFontFamilyWrapper,
|
| - settings);
|
| - ApplyFontsFromMap(prefs.serif_font_family_map, SetSerifFontFamilyWrapper,
|
| - settings);
|
| - ApplyFontsFromMap(prefs.sans_serif_font_family_map,
|
| - SetSansSerifFontFamilyWrapper, settings);
|
| - ApplyFontsFromMap(prefs.cursive_font_family_map, SetCursiveFontFamilyWrapper,
|
| - settings);
|
| - ApplyFontsFromMap(prefs.fantasy_font_family_map, SetFantasyFontFamilyWrapper,
|
| - settings);
|
| - ApplyFontsFromMap(prefs.pictograph_font_family_map,
|
| - SetPictographFontFamilyWrapper, settings);
|
| -
|
| - settings->setDefaultFontSize(prefs.default_font_size);
|
| - settings->setDefaultFixedFontSize(prefs.default_fixed_font_size);
|
| - settings->setMinimumFontSize(prefs.minimum_font_size);
|
| - settings->setMinimumLogicalFontSize(prefs.minimum_logical_font_size);
|
| -
|
| - settings->setDefaultTextEncodingName(
|
| - base::ASCIIToUTF16(prefs.default_encoding));
|
| - settings->setJavaScriptEnabled(prefs.javascript_enabled);
|
| -
|
| - settings->setWebSecurityEnabled(prefs.web_security_enabled);
|
| - settings->setJavaScriptCanOpenWindowsAutomatically(
|
| - prefs.javascript_can_open_windows_automatically);
|
| - settings->setLoadsImagesAutomatically(prefs.loads_images_automatically);
|
| - settings->setImagesEnabled(prefs.images_enabled);
|
| - settings->setPluginsEnabled(prefs.plugins_enabled);
|
| - settings->setDOMPasteAllowed(prefs.dom_paste_enabled);
|
| - settings->setUsesEncodingDetector(prefs.uses_universal_detector);
|
| - settings->setTextAreasAreResizable(prefs.text_areas_are_resizable);
|
| - settings->setAllowScriptsToCloseWindows(prefs.allow_scripts_to_close_windows);
|
| - settings->setDownloadableBinaryFontsEnabled(prefs.remote_fonts_enabled);
|
| - settings->setJavaScriptCanAccessClipboard(
|
| - prefs.javascript_can_access_clipboard);
|
| - blink::WebRuntimeFeatures::enableXSLT(prefs.xslt_enabled);
|
| - blink::WebRuntimeFeatures::enableSlimmingPaintV2(
|
| - prefs.slimming_paint_v2_enabled);
|
| - settings->setXSSAuditorEnabled(prefs.xss_auditor_enabled);
|
| - settings->setDNSPrefetchingEnabled(prefs.dns_prefetching_enabled);
|
| - settings->setDataSaverEnabled(prefs.data_saver_enabled);
|
| - settings->setLocalStorageEnabled(prefs.local_storage_enabled);
|
| - settings->setSyncXHRInDocumentsEnabled(prefs.sync_xhr_in_documents_enabled);
|
| - blink::WebRuntimeFeatures::enableDatabase(prefs.databases_enabled);
|
| - settings->setOfflineWebApplicationCacheEnabled(
|
| - prefs.application_cache_enabled);
|
| - settings->setCaretBrowsingEnabled(prefs.caret_browsing_enabled);
|
| - settings->setHyperlinkAuditingEnabled(prefs.hyperlink_auditing_enabled);
|
| - settings->setCookieEnabled(prefs.cookie_enabled);
|
| - settings->setNavigateOnDragDrop(prefs.navigate_on_drag_drop);
|
| -
|
| - // By default, allow_universal_access_from_file_urls is set to false and thus
|
| - // we mitigate attacks from local HTML files by not granting file:// URLs
|
| - // universal access. Only test shell will enable this.
|
| - settings->setAllowUniversalAccessFromFileURLs(
|
| - prefs.allow_universal_access_from_file_urls);
|
| - settings->setAllowFileAccessFromFileURLs(
|
| - prefs.allow_file_access_from_file_urls);
|
| -
|
| - // Enable the web audio API if requested on the command line.
|
| - settings->setWebAudioEnabled(prefs.webaudio_enabled);
|
| -
|
| - // Enable experimental WebGL support if requested on command line
|
| - // and support is compiled in.
|
| - settings->setExperimentalWebGLEnabled(experimental_webgl_enabled_);
|
| -
|
| - // Disable GL multisampling if requested on command line.
|
| - settings->setOpenGLMultisamplingEnabled(prefs.gl_multisampling_enabled);
|
| -
|
| - // Enable WebGL errors to the JS console if requested.
|
| - settings->setWebGLErrorsToConsoleEnabled(
|
| - prefs.webgl_errors_to_console_enabled);
|
| -
|
| - // Uses the mock theme engine for scrollbars.
|
| - settings->setMockScrollbarsEnabled(prefs.mock_scrollbars_enabled);
|
| -
|
| - // Enable gpu-accelerated 2d canvas if requested on the command line.
|
| - settings->setAccelerated2dCanvasEnabled(prefs.accelerated_2d_canvas_enabled);
|
| -
|
| - settings->setMinimumAccelerated2dCanvasSize(
|
| - prefs.minimum_accelerated_2d_canvas_size);
|
| -
|
| - // Disable antialiasing for 2d canvas if requested on the command line.
|
| - settings->setAntialiased2dCanvasEnabled(
|
| - !prefs.antialiased_2d_canvas_disabled);
|
| -
|
| - // Enabled antialiasing of clips for 2d canvas if requested on the command
|
| - // line.
|
| - settings->setAntialiasedClips2dCanvasEnabled(
|
| - prefs.antialiased_clips_2d_canvas_enabled);
|
| -
|
| - // Set MSAA sample count for 2d canvas if requested on the command line (or
|
| - // default value if not).
|
| - settings->setAccelerated2dCanvasMSAASampleCount(
|
| - prefs.accelerated_2d_canvas_msaa_sample_count);
|
| -
|
| - settings->setUnifiedTextCheckerEnabled(prefs.unified_textchecker_enabled);
|
| -
|
| - // Tabs to link is not part of the settings. WebCore calls
|
| - // ChromeClient::tabsToLinks which is part of the glue code.
|
| - web_view->setTabsToLinks(prefs.tabs_to_links);
|
| -
|
| - settings->setAllowDisplayOfInsecureContent(
|
| - prefs.allow_displaying_insecure_content);
|
| - settings->setAllowRunningOfInsecureContent(
|
| - prefs.allow_running_insecure_content);
|
| - settings->setDisableReadingFromCanvas(prefs.disable_reading_from_canvas);
|
| - settings->setStrictMixedContentChecking(prefs.strict_mixed_content_checking);
|
| -
|
| - settings->setStrictlyBlockBlockableMixedContent(
|
| - prefs.strictly_block_blockable_mixed_content);
|
| -
|
| - settings->setStrictMixedContentCheckingForPlugin(
|
| - prefs.block_mixed_plugin_content);
|
| -
|
| - settings->setStrictPowerfulFeatureRestrictions(
|
| - prefs.strict_powerful_feature_restrictions);
|
| - settings->setPasswordEchoEnabled(prefs.password_echo_enabled);
|
| - settings->setShouldPrintBackgrounds(prefs.should_print_backgrounds);
|
| - settings->setShouldClearDocumentBackground(
|
| - prefs.should_clear_document_background);
|
| - settings->setEnableScrollAnimator(prefs.enable_scroll_animator);
|
| -
|
| - blink::WebRuntimeFeatures::enableTouch(prefs.touch_enabled);
|
| - settings->setMaxTouchPoints(prefs.pointer_events_max_touch_points);
|
| - settings->setAvailablePointerTypes(prefs.available_pointer_types);
|
| - settings->setPrimaryPointerType(
|
| - static_cast<blink::PointerType>(prefs.primary_pointer_type));
|
| - settings->setAvailableHoverTypes(prefs.available_hover_types);
|
| - settings->setPrimaryHoverType(
|
| - static_cast<blink::HoverType>(prefs.primary_hover_type));
|
| - settings->setDeviceSupportsTouch(prefs.device_supports_touch);
|
| - settings->setDeviceSupportsMouse(prefs.device_supports_mouse);
|
| - settings->setEnableTouchAdjustment(prefs.touch_adjustment_enabled);
|
| - settings->setMultiTargetTapNotificationEnabled(
|
| - switches::IsLinkDisambiguationPopupEnabled());
|
| -
|
| - blink::WebRuntimeFeatures::enableImageColorProfiles(
|
| - prefs.image_color_profiles_enabled);
|
| - settings->setShouldRespectImageOrientation(
|
| - prefs.should_respect_image_orientation);
|
| -
|
| - settings->setUnsafePluginPastingEnabled(false);
|
| - settings->setEditingBehavior(
|
| - static_cast<blink::WebSettings::EditingBehavior>(prefs.editing_behavior));
|
| -
|
| - settings->setSupportsMultipleWindows(prefs.supports_multiple_windows);
|
| -
|
| - settings->setViewportEnabled(prefs.viewport_enabled);
|
| - settings->setLoadWithOverviewMode(prefs.initialize_at_minimum_page_scale);
|
| - settings->setViewportMetaEnabled(prefs.viewport_meta_enabled);
|
| - settings->setMainFrameResizesAreOrientationChanges(
|
| - prefs.main_frame_resizes_are_orientation_changes);
|
| -
|
| - settings->setSmartInsertDeleteEnabled(prefs.smart_insert_delete_enabled);
|
| -
|
| - settings->setSpatialNavigationEnabled(prefs.spatial_navigation_enabled);
|
| -
|
| - settings->setSelectionIncludesAltImageText(true);
|
| -
|
| - settings->setV8CacheOptions(
|
| - static_cast<blink::WebSettings::V8CacheOptions>(prefs.v8_cache_options));
|
| -
|
| - settings->setImageAnimationPolicy(
|
| - static_cast<blink::WebSettings::ImageAnimationPolicy>(
|
| - prefs.animation_policy));
|
| -
|
| - // Needs to happen before setIgnoreVIewportTagScaleLimits below.
|
| - web_view->setDefaultPageScaleLimits(prefs.default_minimum_page_scale_factor,
|
| - prefs.default_maximum_page_scale_factor);
|
| -
|
| -#if defined(OS_ANDROID)
|
| - settings->setAllowCustomScrollbarInMainFrame(false);
|
| - settings->setTextAutosizingEnabled(prefs.text_autosizing_enabled);
|
| - settings->setAccessibilityFontScaleFactor(prefs.font_scale_factor);
|
| - settings->setDeviceScaleAdjustment(prefs.device_scale_adjustment);
|
| - settings->setFullscreenSupported(prefs.fullscreen_supported);
|
| - web_view->setIgnoreViewportTagScaleLimits(prefs.force_enable_zoom);
|
| - settings->setAutoZoomFocusedNodeToLegibleScale(true);
|
| - settings->setDoubleTapToZoomEnabled(prefs.double_tap_to_zoom_enabled);
|
| - settings->setMediaControlsOverlayPlayButtonEnabled(true);
|
| - settings->setMediaPlaybackRequiresUserGesture(
|
| - prefs.user_gesture_required_for_media_playback);
|
| - settings->setDefaultVideoPosterURL(
|
| - base::ASCIIToUTF16(prefs.default_video_poster_url.spec()));
|
| - settings->setSupportDeprecatedTargetDensityDPI(
|
| - prefs.support_deprecated_target_density_dpi);
|
| - settings->setUseLegacyBackgroundSizeShorthandBehavior(
|
| - prefs.use_legacy_background_size_shorthand_behavior);
|
| - settings->setWideViewportQuirkEnabled(prefs.wide_viewport_quirk);
|
| - settings->setUseWideViewport(prefs.use_wide_viewport);
|
| - settings->setForceZeroLayoutHeight(prefs.force_zero_layout_height);
|
| - settings->setViewportMetaLayoutSizeQuirk(
|
| - prefs.viewport_meta_layout_size_quirk);
|
| - settings->setViewportMetaMergeContentQuirk(
|
| - prefs.viewport_meta_merge_content_quirk);
|
| - settings->setViewportMetaNonUserScalableQuirk(
|
| - prefs.viewport_meta_non_user_scalable_quirk);
|
| - settings->setViewportMetaZeroValuesQuirk(
|
| - prefs.viewport_meta_zero_values_quirk);
|
| - settings->setClobberUserAgentInitialScaleQuirk(
|
| - prefs.clobber_user_agent_initial_scale_quirk);
|
| - settings->setIgnoreMainFrameOverflowHiddenQuirk(
|
| - prefs.ignore_main_frame_overflow_hidden_quirk);
|
| - settings->setReportScreenSizeInPhysicalPixelsQuirk(
|
| - prefs.report_screen_size_in_physical_pixels_quirk);
|
| - settings->setPreferHiddenVolumeControls(true);
|
| - settings->setMainFrameClipsContent(!prefs.record_whole_document);
|
| - settings->setShrinksViewportContentToFit(true);
|
| - settings->setUseMobileViewportStyle(true);
|
| - settings->setAutoplayExperimentMode(
|
| - blink::WebString::fromUTF8(prefs.autoplay_experiment_mode));
|
| -#endif
|
| -
|
| - blink::WebNetworkStateNotifier::setOnLine(prefs.is_online);
|
| - blink::WebNetworkStateNotifier::setWebConnection(
|
| - NetConnectionTypeToWebConnectionType(prefs.net_info_connection_type),
|
| - prefs.net_info_max_bandwidth_mbps);
|
| -
|
| - settings->setPinchOverlayScrollbarThickness(
|
| - prefs.pinch_overlay_scrollbar_thickness);
|
| - settings->setUseSolidColorScrollbars(prefs.use_solid_color_scrollbars);
|
| -
|
| - settings->setShowContextMenuOnMouseUp(prefs.context_menu_on_mouse_up);
|
| -
|
| -#if defined(OS_MACOSX)
|
| - settings->setDoubleTapToZoomEnabled(true);
|
| - web_view->setMaximumLegibleScale(prefs.default_maximum_page_scale_factor);
|
| -#endif
|
| -}
|
| -
|
| -#if defined(OS_LINUX)
|
| -// TODO(rjkroege): Some of this information needs to be plumbed out of
|
| -// mus into the html_viewer. Most of this information needs to be
|
| -// dynamically adjustable (e.g. if I move a mandoline PlatformWindow from
|
| -// a LCD panel to a CRT display on a multiple-monitor system, then mus
|
| -// should communicate this to the app as part of having the app rasterize
|
| -// itself. See http://crbug.com/540054
|
| -void BlinkSettingsImpl::ApplyFontRendereringSettings() const {
|
| - blink::WebFontRendering::setHinting(SkPaint::kNormal_Hinting);
|
| - blink::WebFontRendering::setAutoHint(false);
|
| - blink::WebFontRendering::setUseBitmaps(false);
|
| - blink::WebFontRendering::setLCDOrder(
|
| - gfx::FontRenderParams::SubpixelRenderingToSkiaLCDOrder(
|
| - gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE));
|
| - blink::WebFontRendering::setLCDOrientation(
|
| - gfx::FontRenderParams::SubpixelRenderingToSkiaLCDOrientation(
|
| - gfx::FontRenderParams::SUBPIXEL_RENDERING_NONE));
|
| - blink::WebFontRendering::setAntiAlias(true);
|
| - blink::WebFontRendering::setSubpixelRendering(false);
|
| - blink::WebFontRendering::setSubpixelPositioning(false);
|
| - blink::WebFontRendering::setDefaultFontSize(0);
|
| -}
|
| -#else
|
| -void BlinkSettingsImpl::ApplyFontRendereringSettings() const {}
|
| -#endif
|
| -
|
| -BlinkSettingsImpl::BlinkSettingsImpl() : experimental_webgl_enabled_(false) {}
|
| -
|
| -void BlinkSettingsImpl::Init() {
|
| - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
|
| - experimental_webgl_enabled_ = !command_line->HasSwitch(kDisableWebGLSwitch);
|
| -}
|
| -
|
| -void BlinkSettingsImpl::ApplySettingsToWebView(blink::WebView* view) const {
|
| - WebPreferences prefs;
|
| - ApplySettings(view, prefs);
|
| - ApplyFontRendereringSettings();
|
| -}
|
| -
|
| -} // namespace html_viewer
|
|
|