[Cherry-pick] [EFL][WK2] Add ewk_settings APIs for text autosizing
authorJaehun Lim <ljaehun.lim@samsung.com>
Tue, 23 Apr 2013 11:19:31 +0000 (20:19 +0900)
committerJaehun Lim <ljaehun.lim@samsung.com>
Thu, 25 Apr 2013 00:25:59 +0000 (09:25 +0900)
[EFL][WK2] Add ewk_settings APIs for text autosizing
https://bugs.webkit.org/show_bug.cgi?id=103342

Reviewed by Kenneth Rohde Christiansen.

Add ewk_settings_text_autosizing_enabled_get / set() functions.
Text autosizing is disabled by default.

* UIProcess/API/efl/ewk_settings.cpp:
(ewk_settings_text_autosizing_enabled_set):
(ewk_settings_text_autosizing_enabled_get):
* UIProcess/API/efl/ewk_settings.h:
* UIProcess/API/efl/tests/test_ewk2_settings.cpp:
(TEST_F):

Change-Id: Id519d9fe9e983b3d61b83f0d393d0082c2c01c60

Source/WTF/wtf/Platform.h
Source/WebCore/page/Settings.cpp
Source/WebCore/rendering/TextAutosizer.cpp
Source/WebKit2/UIProcess/API/efl/ewk_settings.cpp
Source/WebKit2/UIProcess/API/efl/ewk_settings.h
Source/cmake/OptionsTizen.cmake

index ec030ed..39f2833 100644 (file)
 #define ENABLE_TIZEN_DRAW_SCALED_PATTERN 1 /* Kyungjin Kim(gen.kim@samsung.com) : Scale image prior to draw it's pattern to enhance performance */
 #define ENABLE_TIZEN_PAINT_SELECTION_ANTIALIAS_NONE 1 /* Hyeonji Kim(hyeonji.kim@samsung.com) : Remove the line between the preceding text block and the next text block which are selected */
 
+#if ENABLE(TEXT_AUTOSIZING)
+#define ENABLE_TIZEN_TEXT_AUTOSIZING 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : for Tizen environment */
+#endif
+
 /* Download Patches */
 #define ENABLE_TIZEN_DOWNLOAD 1 /* Keunsoon Lee(keunsoon.lee@samsung.com) : */
 
index 158f9d8..c06cb04 100755 (executable)
@@ -149,6 +149,9 @@ Settings::Settings(Page* page)
     , m_maximumHTMLParserDOMTreeDepth(defaultMaximumHTMLParserDOMTreeDepth)
 #if ENABLE(TEXT_AUTOSIZING)
     , m_textAutosizingFontScaleFactor(1)
+#if ENABLE(TIZEN_TEXT_AUTOSIZING)
+    , m_textAutosizingWindowSizeOverride(320, 480)
+#else
 #if HACK_FORCE_TEXT_AUTOSIZING_ON_DESKTOP
     , m_textAutosizingWindowSizeOverride(320, 480)
     , m_textAutosizingEnabled(true)
@@ -156,6 +159,7 @@ Settings::Settings(Page* page)
     , m_textAutosizingEnabled(false)
 #endif
 #endif
+#endif
     , m_isSpatialNavigationEnabled(false)
     , m_isJavaEnabled(false)
     , m_isJavaEnabledForLocalFiles(true)
index 13eee4c..6757ed9 100644 (file)
@@ -115,7 +115,11 @@ bool TextAutosizer::processSubtree(RenderObject* layoutRoot)
     windowInfo.windowSize = m_document->settings()->textAutosizingWindowSizeOverride();
     if (windowInfo.windowSize.isEmpty()) {
         bool includeScrollbars = !InspectorInstrumentation::shouldApplyScreenWidthOverride(mainFrame);
+#if ENABLE(TIZEN_TEXT_AUTOSIZING)
+        windowInfo.windowSize = mainFrame->view()->visibleContentRect(includeScrollbars).size();
+#else
         windowInfo.windowSize = mainFrame->view()->unscaledVisibleContentSize(includeScrollbars ? ScrollableArea::IncludeScrollbars : ScrollableArea::ExcludeScrollbars);
+#endif
     }
 
     // Largest area of block that can be visible at once (assuming the main
index b36bf92..6af8a5b 100755 (executable)
@@ -574,3 +574,31 @@ Eina_Bool ewk_settings_clear_text_selection_automatically_get(const Ewk_Settings
     return false;
 #endif
 }
+
+Eina_Bool ewk_settings_text_autosizing_enabled_set(Ewk_Settings* settings, Eina_Bool enable)
+{
+#if ENABLE(TEXT_AUTOSIZING)
+    EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
+
+    settings->preferences()->setTextAutosizingEnabled(enable);
+    
+    return true;
+#else
+    UNUSED_PARAM(settings);
+    UNUSED_PARAM(enable);
+    return false;
+#endif
+}
+
+Eina_Bool ewk_settings_text_autosizing_enabled_get(const Ewk_Settings* settings)
+{
+#if ENABLE(TEXT_AUTOSIZING)
+    EINA_SAFETY_ON_NULL_RETURN_VAL(settings, false);
+
+    return settings->preferences()->textAutosizingEnabled();
+#else
+    UNUSED_PARAM(settings);
+    return false;
+#endif
+}
+
index aa0ad10..ba010b9 100644 (file)
@@ -601,6 +601,34 @@ EAPI Eina_Bool ewk_settings_clear_text_selection_automatically_set(Ewk_Settings*
 EAPI Eina_Bool ewk_settings_clear_text_selection_automatically_get(const Ewk_Settings* settings);
 //#endif
 
+/**
+ * Enables/disables text autosizing.
+ *
+ * By default, the text autosizing is disabled.
+ *
+ * @param settings settings object to set the text autosizing
+ * @param enable @c EINA_TRUE to enable the text autosizing
+ *               @c EINA_FALSE to disable
+ *
+ * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
+ *
+ * @see ewk_settings_text_autosizing_enabled_get()
+ */
+EAPI Eina_Bool ewk_settings_text_autosizing_enabled_set(Ewk_Settings *settings, Eina_Bool enable);
+
+/**
+ * Returns whether the text autosizing is enabled.
+ *
+ * The text autosizing is a feature which adjusts the font size of text in wide
+ * columns, and makes text more legible.
+ *
+ * @param settings settings object to query whether text autosizing is enabled
+ *
+ * @return @c EINA_TRUE if the text autosizing is enabled
+ *         @c EINA_FALSE if not or on failure
+ */
+EAPI Eina_Bool ewk_settings_text_autosizing_enabled_get(const Ewk_Settings *settings);
+
 #ifdef __cplusplus
 }
 #endif
index add56ea..82a7c0c 100644 (file)
@@ -165,7 +165,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SCREEN_ORIENTATION_SUPPORT ON)  # FIXME:
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHARED_WORKERS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPELLCHECK ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_STYLE_SCOPED ON)
-WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEXT_AUTOSIZING OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEXT_AUTOSIZING ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_ICON_LOADING ON)
 WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIBRATION ON)