<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[171182] trunk/Source/WebKit2</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/171182">171182</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-07-17 03:55:57 -0700 (Thu, 17 Jul 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[EFL][WK2] Add a &quot;focus,notfound&quot; signal.
https://bugs.webkit.org/show_bug.cgi?id=134674

Patch by Sanghyup Lee &lt;sh53.lee@samsung.com&gt; on 2014-07-17
Reviewed by Gyuyoung Kim.

Add a &quot;focus,notfound&quot; signal to handover focus control to application
because there are no elements of webview to focus on the given direction.

Application can decide to move the focus to next widget of ewk_view or something else
by using this signal.

* UIProcess/API/efl/EwkViewCallbacks.h:
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: Added keyDown and keyUp function.
(EWK2UnitTest::EWK2UnitTestBase::waitUntilDirectionChanged):
(EWK2UnitTest::EWK2UnitTestBase::keyDown):
(EWK2UnitTest::EWK2UnitTestBase::keyUp):
* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(EWK2ViewTest::FocusNotFoundCallback):
(TEST_F):
* UIProcess/efl/PageUIClientEfl.cpp: Removed unnecessary calls to evas_object_focus_set().
(WebKit::PageUIClientEfl::takeFocus):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIeflEwkViewCallbacksh">trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIeflewk_viewh">trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIefltestsUnitTestUtilsEWK2UnitTestBasecpp">trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIefltestsUnitTestUtilsEWK2UnitTestBaseh">trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPIeflteststest_ewk2_viewcpp">trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcesseflPageUIClientEflcpp">trunk/Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/ChangeLog        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2014-07-17  Sanghyup Lee  &lt;sh53.lee@samsung.com&gt;
+
+        [EFL][WK2] Add a &quot;focus,notfound&quot; signal.
+        https://bugs.webkit.org/show_bug.cgi?id=134674
+
+        Reviewed by Gyuyoung Kim.
+
+        Add a &quot;focus,notfound&quot; signal to handover focus control to application
+        because there are no elements of webview to focus on the given direction.
+
+        Application can decide to move the focus to next widget of ewk_view or something else
+        by using this signal.
+
+        * UIProcess/API/efl/EwkViewCallbacks.h:
+        * UIProcess/API/efl/ewk_view.h:
+        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp: Added keyDown and keyUp function.
+        (EWK2UnitTest::EWK2UnitTestBase::waitUntilDirectionChanged):
+        (EWK2UnitTest::EWK2UnitTestBase::keyDown):
+        (EWK2UnitTest::EWK2UnitTestBase::keyUp):
+        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
+        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+        (EWK2ViewTest::FocusNotFoundCallback):
+        (TEST_F):
+        * UIProcess/efl/PageUIClientEfl.cpp: Removed unnecessary calls to evas_object_focus_set().
+        (WebKit::PageUIClientEfl::takeFocus):
+
</ins><span class="cx"> 2014-07-16  Brady Eidson  &lt;beidson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Reintroduce the SPI _websiteDataURLForContainerWithURL: that was removed in r171160
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIeflEwkViewCallbacksh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewCallbacks.h        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx"> #define EwkViewCallbacks_h
</span><span class="cx"> 
</span><span class="cx"> #include &quot;WKEinaSharedString.h&quot;
</span><ins>+#include &quot;WKPageUIClient.h&quot;
</ins><span class="cx"> #include &quot;ewk_view.h&quot;
</span><span class="cx"> #include &lt;Evas.h&gt;
</span><span class="cx"> #include &lt;WebKit/WKGeometry.h&gt;
</span><span class="lines">@@ -52,6 +53,7 @@
</span><span class="cx">     DownloadJobFinished,
</span><span class="cx">     DownloadJobRequested,
</span><span class="cx">     FileChooserRequest,
</span><ins>+    FocusNotFound,
</ins><span class="cx">     NewFormSubmissionRequest,
</span><span class="cx">     LoadError,
</span><span class="cx">     LoadFinished,
</span><span class="lines">@@ -144,6 +146,24 @@
</span><span class="cx">     }
</span><span class="cx"> };
</span><span class="cx"> 
</span><ins>+template &lt;CallbackType callbackType&gt;
+struct CallBack &lt;callbackType, Ewk_Focus_Direction&gt; : public EvasObjectHolder {
+    explicit CallBack(Evas_Object* view)
+        : EvasObjectHolder(view)
+    { }
+
+    void call(Ewk_Focus_Direction direction)
+    {
+        evas_object_smart_callback_call(m_object, CallBackInfo&lt;callbackType&gt;::name(), &amp;direction);
+    }
+
+    void call(const WKFocusDirection arg)
+    {
+        Ewk_Focus_Direction direction = (arg == kWKFocusDirectionForward) ? EWK_FOCUS_DIRECTION_FORWARD : EWK_FOCUS_DIRECTION_BACKWARD;
+        call(direction);
+    }
+};
+
</ins><span class="cx"> #define DECLARE_EWK_VIEW_CALLBACK(callbackType, string, type) \
</span><span class="cx"> template &lt;&gt;                                                   \
</span><span class="cx"> struct CallBackInfo&lt;callbackType&gt; {                           \
</span><span class="lines">@@ -161,6 +181,7 @@
</span><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(DownloadJobFinished, &quot;download,finished&quot;, Ewk_Download_Job*);
</span><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(DownloadJobRequested, &quot;download,request&quot;, Ewk_Download_Job*);
</span><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(FileChooserRequest, &quot;file,chooser,request&quot;, Ewk_File_Chooser_Request*);
</span><ins>+DECLARE_EWK_VIEW_CALLBACK(FocusNotFound, &quot;focus,notfound&quot;, Ewk_Focus_Direction);
</ins><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(NewFormSubmissionRequest, &quot;form,submission,request&quot;, Ewk_Form_Submission_Request*);
</span><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(LoadError, &quot;load,error&quot;, Ewk_Error*);
</span><span class="cx"> DECLARE_EWK_VIEW_CALLBACK(LoadFinished, &quot;load,finished&quot;, void);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIeflewk_viewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -39,6 +39,8 @@
</span><span class="cx">  * - &quot;file,chooser,request&quot;, Ewk_File_Chooser_Request*: reports that a request has been made for the user to choose
</span><span class="cx">  *   a file (or several) on the file system. Call ewk_file_chooser_request_ref() on the request object to process it
</span><span class="cx">  *   asynchronously.
</span><ins>+ * - &quot;focus,notfound&quot;, Ewk_Focus_Direction*: reports that there was no element to be focused on the given direction.
+ *   The user can handle next focus behavior using the signal.
</ins><span class="cx">  * - &quot;form,submission,request&quot;, Ewk_Form_Submission_Request*: Reports that a form request is about to be submitted.
</span><span class="cx">  *   The Ewk_Form_Submission_Request passed contains information about the text fields of the form. This
</span><span class="cx">  *   is typically used to store login information that can be used later to pre-fill the form.
</span><span class="lines">@@ -276,6 +278,14 @@
</span><span class="cx"> } Ewk_Pagination_Mode;
</span><span class="cx"> 
</span><span class="cx"> /**
</span><ins>+ * Enum values used to set focus direction.
+ */
+typedef enum Ewk_Focus_Direction {
+    EWK_FOCUS_DIRECTION_FORWARD = 0,
+    EWK_FOCUS_DIRECTION_BACKWARD,
+} Ewk_Focus_Direction;
+
+/**
</ins><span class="cx">  * @typedef Ewk_View_Script_Execute_Cb Ewk_View_Script_Execute_Cb
</span><span class="cx">  * @brief Callback type for use with ewk_view_script_execute()
</span><span class="cx">  */
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIefltestsUnitTestUtilsEWK2UnitTestBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -239,6 +239,17 @@
</span><span class="cx">     return !data.didTimeOut();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool EWK2UnitTestBase::waitUntilDirectionChanged(Ewk_Focus_Direction &amp;direction, double timeoutSeconds)
+{
+    CallbackDataTimer data(timeoutSeconds);
+    Ewk_Focus_Direction initialDirection = direction;
+
+    while (!data.isDone() &amp;&amp; direction == initialDirection)
+        ecore_main_loop_iterate();
+
+    return !data.didTimeOut();
+}
+
</ins><span class="cx"> Eina_List* EWK2UnitTestBase::waitUntilSpellingLanguagesLoaded(unsigned expectedLanguageCount, double timeoutValue)
</span><span class="cx"> {
</span><span class="cx">     // Keep waiting until all languages has been loaded or leave afqter timeout.
</span><span class="lines">@@ -312,4 +323,24 @@
</span><span class="cx">     evas_event_feed_multi_move(evas_object_evas_get(m_webView), id, x, y, 0, 0, 0, 0, 0, 0, 0, 0, 0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void EWK2UnitTestBase::keyDown(char* keyname, char* key, char* string, char* modifier)
+{
+    Evas* evas = evas_object_evas_get(m_webView);
+    ASSERT(evas);
+
+    if (modifier) {
+        evas_key_modifier_on(evas, modifier);
+        evas_event_feed_key_down(evas, keyname, key, string, 0, 0, 0);
+        evas_key_modifier_off(evas, modifier);
+        return;
+    }
+
+    evas_event_feed_key_down(evas, keyname, key, string, 0, 0, 0);
+}
+
+void EWK2UnitTestBase::keyUp(char* keyname, char* key, char* string)
+{
+    evas_event_feed_key_up(evas_object_evas_get(m_webView), keyname, key, string, 0, 0, 0);
+}
+
</ins><span class="cx"> } // namespace EWK2UnitTest
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIefltestsUnitTestUtilsEWK2UnitTestBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -52,6 +52,7 @@
</span><span class="cx">     bool waitUntilTitleChangedTo(const char* expectedTitle, double timeoutSeconds = defaultTimeoutSeconds);
</span><span class="cx">     bool waitUntilURLChangedTo(const char* expectedURL, double timeoutSeconds = defaultTimeoutSeconds);
</span><span class="cx">     bool waitUntilTrue(bool &amp;flag, double timeoutSeconds = defaultTimeoutSeconds);
</span><ins>+    bool waitUntilDirectionChanged(Ewk_Focus_Direction &amp;direction, double timeoutSeconds = defaultTimeoutSeconds);
</ins><span class="cx">     Eina_List* waitUntilSpellingLanguagesLoaded(unsigned expectedLanguageCount, double timeoutValue = defaultTimeoutSeconds);
</span><span class="cx"> 
</span><span class="cx">     void mouseClick(int x, int y, int button = 1 /*Left*/);
</span><span class="lines">@@ -62,6 +63,8 @@
</span><span class="cx">     void multiDown(int id, int x, int y);
</span><span class="cx">     void multiUp(int id, int x, int y);
</span><span class="cx">     void multiMove(int id, int x, int y);
</span><ins>+    void keyDown(char* keyname, char* key, char* string, char* modifier);
+    void keyUp(char* keyname, char* key, char* string);
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     Evas_Object* m_webView;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPIeflteststest_ewk2_viewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -238,6 +238,13 @@
</span><span class="cx"> 
</span><span class="cx">         obtainedPageContents = true;
</span><span class="cx">     }
</span><ins>+
+    static void FocusNotFoundCallback(void* userData, Evas_Object*, void* eventInfo)
+    {
+        Ewk_Focus_Direction* direction = static_cast&lt;Ewk_Focus_Direction*&gt;(eventInfo);
+        Ewk_Focus_Direction* result = static_cast&lt;Ewk_Focus_Direction*&gt;(userData);
+        *result = *direction;
+    }
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> TEST_F(EWK2ViewTest, ewk_view_type_check)
</span><span class="lines">@@ -1201,3 +1208,36 @@
</span><span class="cx">     EXPECT_EQ(2000, contentsWidth);
</span><span class="cx">     EXPECT_EQ(3000, contentsHeight);
</span><span class="cx"> }
</span><ins>+
+TEST_F(EWK2ViewTest, ewk_focus_notfound)
+{
+    const char contents[] =
+        &quot;&lt;!DOCTYPE html&gt;&quot;
+        &quot;&lt;body&gt;&lt;input type='text' autofocus&gt;&lt;/body&gt;&quot;;
+    ewk_view_html_string_load(webView(), contents, 0, 0);
+    ASSERT_TRUE(waitUntilLoadFinished());
+
+    Ewk_Settings* settings = ewk_page_group_settings_get(ewk_view_page_group_get(webView()));
+    ewk_settings_spatial_navigation_enabled_set(settings, EINA_TRUE);
+
+    Ewk_Focus_Direction direction = EWK_FOCUS_DIRECTION_FORWARD;
+    evas_object_smart_callback_add(webView(), &quot;focus,notfound&quot;, FocusNotFoundCallback, &amp;direction);
+
+    keyDown(&quot;Tab&quot;, &quot;Tab&quot;, 0, &quot;Shift&quot;);
+    keyUp(&quot;Tab&quot;, &quot;Tab&quot;, 0);
+
+    ASSERT_TRUE(waitUntilDirectionChanged(direction));
+    EXPECT_EQ(EWK_FOCUS_DIRECTION_BACKWARD, direction);
+
+    // Set focus to the input element again.
+    keyDown(&quot;Tab&quot;, &quot;Tab&quot;, 0, 0);
+    keyUp(&quot;Tab&quot;, &quot;Tab&quot;, 0);
+
+    keyDown(&quot;Tab&quot;, &quot;Tab&quot;, 0, 0);
+    keyUp(&quot;Tab&quot;, &quot;Tab&quot;, 0);
+
+    ASSERT_TRUE(waitUntilDirectionChanged(direction));
+    EXPECT_EQ(EWK_FOCUS_DIRECTION_FORWARD, direction);
+
+    evas_object_smart_callback_del(webView(), &quot;focus,notfound&quot;, FocusNotFoundCallback);
+}
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcesseflPageUIClientEflcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp (171181 => 171182)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp        2014-07-17 09:29:49 UTC (rev 171181)
+++ trunk/Source/WebKit2/UIProcess/efl/PageUIClientEfl.cpp        2014-07-17 10:55:57 UTC (rev 171182)
</span><span class="lines">@@ -98,10 +98,9 @@
</span><span class="cx">     toPageUIClientEfl(clientInfo)-&gt;m_view-&gt;close();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PageUIClientEfl::takeFocus(WKPageRef, WKFocusDirection, const void* clientInfo)
</del><ins>+void PageUIClientEfl::takeFocus(WKPageRef, WKFocusDirection direction, const void* clientInfo)
</ins><span class="cx"> {
</span><del>-    // FIXME: this is only a partial implementation.
-    evas_object_focus_set(toPageUIClientEfl(clientInfo)-&gt;m_view-&gt;evasObject(), false);
</del><ins>+    toPageUIClientEfl(clientInfo)-&gt;m_view-&gt;smartCallback&lt;FocusNotFound&gt;().call(direction);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageUIClientEfl::focus(WKPageRef, const void* clientInfo)
</span></span></pre>
</div>
</div>

</body>
</html>