Changeset 126866 in webkit


Ignore:
Timestamp:
Aug 28, 2012 4:31:55 AM (12 years ago)
Author:
ryuan.choi@samsung.com
Message:

[EFL][WK2] Implement WebPopupMenuProxyEfl to support <select>
https://bugs.webkit.org/show_bug.cgi?id=88616

Reviewed by Gyuyoung Kim.

Source/WebKit2:

Implemented popup menu proxy and interface for Efl.

Applications should implement popup menu by overriding
smart class function to support select tag.

  • PlatformEfl.cmake:
  • UIProcess/API/efl/EWebKit2.h: Included ewk_popup_menu_item.h
  • UIProcess/API/efl/PageClientImpl.cpp:

(WebKit::PageClientImpl::createPopupMenuProxy):

  • UIProcess/API/efl/ewk_popup_menu_item.cpp: Added.

(_Ewk_Popup_Menu_Item):
(_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item):
(ewk_popup_menu_item_new):
(ewk_popup_menu_item_free):
(ewk_popup_menu_item_type_get): Added API to retrieve type of item.
(ewk_popup_menu_item_text_get): Added API to retrieve text of item.

  • UIProcess/API/efl/ewk_popup_menu_item.h: Added.
  • UIProcess/API/efl/ewk_popup_menu_item_private.h: Added.
  • UIProcess/API/efl/ewk_view.cpp:

(_Ewk_View_Private_Data):
(_Ewk_View_Private_Data::_Ewk_View_Private_Data):
(_Ewk_View_Private_Data::~_Ewk_View_Private_Data):
(ewk_view_popup_menu_request): Added to call popup_menu_show, smart class function.
(ewk_view_popup_menu_close): Added API to call popup_menu_hide, smart class function.
(ewk_view_popup_menu_select): Added API to change selected index.

  • UIProcess/API/efl/ewk_view.h:

Added smart class function for applications to override.

  • UIProcess/API/efl/ewk_view_private.h:
  • UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:

(EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase):
(EWK2UnitTest::EWK2UnitTestBase::SetUp):
(EWK2UnitTest::EWK2UnitTestBase::loadUrlSync):
(EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished):
Extracted from loadUrlSync for tests using ewk_view_html_string_load to
share onLoadFinished.

  • UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:

(EWK2UnitTest::EWK2UnitTestBase::ewkViewClass):
Added ewkViewClass to test smart methods such as popup_menu_show.

  • UIProcess/API/efl/tests/test_ewk2_view.cpp:

(popup_menu_show):
(TEST_F): Added a test case for ewk_view_popup_menu_select and related codes.

  • UIProcess/efl/WebPopupMenuProxyEfl.cpp: Added.

(WebKit):
(WebKit::WebPopupMenuProxyEfl::WebPopupMenuProxyEfl):
(WebKit::WebPopupMenuProxyEfl::showPopupMenu):
(WebKit::WebPopupMenuProxyEfl::hidePopupMenu):
(WebKit::WebPopupMenuProxyEfl::valueChanged):

  • UIProcess/efl/WebPopupMenuProxyEfl.h: Added.

(WebPopupMenuProxyEfl):
(WebKit::WebPopupMenuProxyEfl::create):

LayoutTests:

  • platform/efl-wk2/TestExpectations: Unskip fast/forms/select/menulist-popup-crash.html
Location:
trunk
Files:
5 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r126865 r126866  
     12012-08-28  Ryuan Choi  <ryuan.choi@samsung.com>
     2
     3        [EFL][WK2] Implement WebPopupMenuProxyEfl to support <select>
     4        https://bugs.webkit.org/show_bug.cgi?id=88616
     5
     6        Reviewed by Gyuyoung Kim.
     7
     8        * platform/efl-wk2/TestExpectations: Unskip fast/forms/select/menulist-popup-crash.html
     9
    1102012-08-28  Sukolsak Sakshuwong  <sukolsak@gmail.com>
    211
  • trunk/LayoutTests/platform/efl-wk2/TestExpectations

    r126745 r126866  
    3939BUGWKEFL : inspector/debugger/debugger-eval-on-call-frame.html = CRASH
    4040BUGWKEFL : fast/loader/document-with-fragment-url-1.html = CRASH
    41 BUGWKEFL : fast/forms/select/menulist-popup-crash.html = CRASH
    4241BUGWKEFL : fast/forms/fieldset/fieldset-crash.html = CRASH
    4342BUGWKEFL : fast/events/keyevent-iframe-removed-crash.html = CRASH
  • trunk/Source/WebKit2/ChangeLog

    r126844 r126866  
     12012-08-28  Ryuan Choi  <ryuan.choi@samsung.com>
     2
     3        [EFL][WK2] Implement WebPopupMenuProxyEfl to support <select>
     4        https://bugs.webkit.org/show_bug.cgi?id=88616
     5
     6        Reviewed by Gyuyoung Kim.
     7
     8        Implemented popup menu proxy and interface for Efl.
     9
     10        Applications should implement popup menu by overriding
     11        smart class function to support select tag.
     12
     13        * PlatformEfl.cmake:
     14        * UIProcess/API/efl/EWebKit2.h: Included ewk_popup_menu_item.h
     15        * UIProcess/API/efl/PageClientImpl.cpp:
     16        (WebKit::PageClientImpl::createPopupMenuProxy):
     17        * UIProcess/API/efl/ewk_popup_menu_item.cpp: Added.
     18        (_Ewk_Popup_Menu_Item):
     19        (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item):
     20        (ewk_popup_menu_item_new):
     21        (ewk_popup_menu_item_free):
     22        (ewk_popup_menu_item_type_get): Added API to retrieve type of item.
     23        (ewk_popup_menu_item_text_get): Added API to retrieve text of item.
     24        * UIProcess/API/efl/ewk_popup_menu_item.h: Added.
     25        * UIProcess/API/efl/ewk_popup_menu_item_private.h: Added.
     26        * UIProcess/API/efl/ewk_view.cpp:
     27        (_Ewk_View_Private_Data):
     28        (_Ewk_View_Private_Data::_Ewk_View_Private_Data):
     29        (_Ewk_View_Private_Data::~_Ewk_View_Private_Data):
     30        (ewk_view_popup_menu_request): Added to call popup_menu_show, smart class function.
     31        (ewk_view_popup_menu_close): Added API to call popup_menu_hide, smart class function.
     32        (ewk_view_popup_menu_select): Added API to change selected index.
     33        * UIProcess/API/efl/ewk_view.h:
     34        Added smart class function for applications to override.
     35        * UIProcess/API/efl/ewk_view_private.h:
     36        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
     37        (EWK2UnitTest::EWK2UnitTestBase::EWK2UnitTestBase):
     38        (EWK2UnitTest::EWK2UnitTestBase::SetUp):
     39        (EWK2UnitTest::EWK2UnitTestBase::loadUrlSync):
     40        (EWK2UnitTest::EWK2UnitTestBase::waitUntilLoadFinished):
     41        Extracted from loadUrlSync for tests using ewk_view_html_string_load to
     42        share onLoadFinished.
     43        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
     44        (EWK2UnitTest::EWK2UnitTestBase::ewkViewClass):
     45        Added ewkViewClass to test smart methods such as popup_menu_show.
     46        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
     47        (popup_menu_show):
     48        (TEST_F): Added a test case for ewk_view_popup_menu_select and related codes.
     49        * UIProcess/efl/WebPopupMenuProxyEfl.cpp: Added.
     50        (WebKit):
     51        (WebKit::WebPopupMenuProxyEfl::WebPopupMenuProxyEfl):
     52        (WebKit::WebPopupMenuProxyEfl::showPopupMenu):
     53        (WebKit::WebPopupMenuProxyEfl::hidePopupMenu):
     54        (WebKit::WebPopupMenuProxyEfl::valueChanged):
     55        * UIProcess/efl/WebPopupMenuProxyEfl.h: Added.
     56        (WebPopupMenuProxyEfl):
     57        (WebKit::WebPopupMenuProxyEfl::create):
     58
    1592012-08-27  Kangil Han  <kangil.han@samsung.com>
    260
  • trunk/Source/WebKit2/PlatformEfl.cmake

    r126019 r126866  
    5656    UIProcess/API/efl/ewk_main.cpp
    5757    UIProcess/API/efl/ewk_navigation_policy_decision.cpp
     58    UIProcess/API/efl/ewk_popup_menu_item.cpp
    5859    UIProcess/API/efl/ewk_url_request.cpp
    5960    UIProcess/API/efl/ewk_url_response.cpp
     
    7677    UIProcess/efl/WebInspectorProxyEfl.cpp
    7778    UIProcess/efl/WebPageProxyEfl.cpp
     79    UIProcess/efl/WebPopupMenuProxyEfl.cpp
    7880    UIProcess/efl/WebPreferencesEfl.cpp
    7981
     
    127129    "${WEBKIT2_DIR}/UIProcess/API/cpp/efl"
    128130    "${WEBKIT2_DIR}/UIProcess/API/efl"
     131    "${WEBKIT2_DIR}/UIProcess/efl"
    129132    "${WEBKIT2_DIR}/UIProcess/soup"
    130133    "${WEBKIT2_DIR}/WebProcess/Downloads/soup"
     
    207210    "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_main.h"
    208211    "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_navigation_policy_decision.h"
     212    "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_popup_menu_item.h"
    209213    "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_url_request.h"
    210214    "${CMAKE_CURRENT_SOURCE_DIR}/UIProcess/API/efl/ewk_url_response.h"
  • trunk/Source/WebKit2/UIProcess/API/efl/EWebKit2.h

    r124875 r126866  
    3939#include "ewk_main.h"
    4040#include "ewk_navigation_policy_decision.h"
     41#include "ewk_popup_menu_item.h"
    4142#include "ewk_url_request.h"
    4243#include "ewk_url_response.h"
  • trunk/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp

    r126844 r126866  
    3434#include "WebPageGroup.h"
    3535#include "WebPageProxy.h"
     36#include "WebPopupMenuProxyEfl.h"
    3637#include "WebPreferences.h"
    3738#include "ewk_context.h"
     
    196197#endif
    197198
    198 PassRefPtr<WebPopupMenuProxy> PageClientImpl::createPopupMenuProxy(WebPageProxy*)
    199 {
    200     notImplemented();
    201     return 0;
     199PassRefPtr<WebPopupMenuProxy> PageClientImpl::createPopupMenuProxy(WebPageProxy* page)
     200{
     201    return WebPopupMenuProxyEfl::create(m_viewWidget, page);
    202202}
    203203
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp

    r126844 r126866  
    3333#include "WKURL.h"
    3434#include "WebContext.h"
     35#include "WebPopupItem.h"
     36#include "WebPopupMenuProxyEfl.h"
    3537#include "ewk_back_forward_list_private.h"
    3638#include "ewk_context.h"
    3739#include "ewk_context_private.h"
    3840#include "ewk_intent_private.h"
     41#include "ewk_popup_menu_item.h"
     42#include "ewk_popup_menu_item_private.h"
    3943#include "ewk_private.h"
    4044#include "ewk_view_find_client_private.h"
     
    8690    Ewk_Back_Forward_List* backForwardList;
    8791
     92    WebPopupMenuProxyEfl* popupMenuProxy;
     93    Eina_List* popupMenuItems;
     94
    8895#ifdef HAVE_ECORE_X
    8996    bool isUsingEcoreX;
     
    99106        : cursorObject(0)
    100107        , backForwardList(0)
     108        , popupMenuProxy(0)
     109        , popupMenuItems(0)
    101110#ifdef HAVE_ECORE_X
    102111        , isUsingEcoreX(false)
     
    117126
    118127        ewk_back_forward_list_free(backForwardList);
     128
     129        void* item;
     130        EINA_LIST_FREE(popupMenuItems, item)
     131            ewk_popup_menu_item_free(static_cast<Ewk_Popup_Menu_Item*>(item));
    119132    }
    120133};
     
    14601473#endif
    14611474}
     1475
     1476COMPILE_ASSERT_MATCHING_ENUM(EWK_TEXT_DIRECTION_RIGHT_TO_LEFT, RTL);
     1477COMPILE_ASSERT_MATCHING_ENUM(EWK_TEXT_DIRECTION_LEFT_TO_RIGHT, LTR);
     1478
     1479void ewk_view_popup_menu_request(Evas_Object* ewkView, WebPopupMenuProxyEfl* popupMenu, const IntRect& rect, TextDirection textDirection, double pageScaleFactor, const Vector<WebPopupItem>& items, int32_t selectedIndex)
     1480{
     1481    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData);
     1482    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
     1483    EINA_SAFETY_ON_NULL_RETURN(smartData->api);
     1484
     1485    ASSERT(popupMenu);
     1486
     1487    if (!smartData->api->popup_menu_show)
     1488        return;
     1489
     1490    if (priv->popupMenuProxy)
     1491        ewk_view_popup_menu_close(ewkView);
     1492    priv->popupMenuProxy = popupMenu;
     1493
     1494    Eina_List* popupItems = 0;
     1495    size_t size = items.size();
     1496    for (size_t i = 0; i < size; ++i) {
     1497        Ewk_Popup_Menu_Item* item = ewk_popup_menu_item_new(items[i].m_type, items[i].m_text.utf8().data());
     1498        popupItems = eina_list_append(popupItems, item);
     1499    }
     1500    priv->popupMenuItems = popupItems;
     1501
     1502    smartData->api->popup_menu_show(smartData, rect, static_cast<Ewk_Text_Direction>(textDirection), pageScaleFactor, popupItems, selectedIndex);
     1503}
     1504
     1505Eina_Bool ewk_view_popup_menu_close(Evas_Object* ewkView)
     1506{
     1507    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
     1508    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
     1509    EINA_SAFETY_ON_NULL_RETURN_VAL(smartData->api, false);
     1510
     1511    if (!priv->popupMenuProxy)
     1512        return false;
     1513
     1514    priv->popupMenuProxy = 0;
     1515
     1516    if (smartData->api->popup_menu_hide)
     1517        smartData->api->popup_menu_hide(smartData);
     1518
     1519    void* item;
     1520    EINA_LIST_FREE(priv->popupMenuItems, item)
     1521        ewk_popup_menu_item_free(static_cast<Ewk_Popup_Menu_Item*>(item));
     1522
     1523    return true;
     1524}
     1525
     1526Eina_Bool ewk_view_popup_menu_select(Evas_Object* ewkView, unsigned int selectedIndex)
     1527{
     1528    EWK_VIEW_SD_GET_OR_RETURN(ewkView, smartData, false);
     1529    EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, false);
     1530    EINA_SAFETY_ON_NULL_RETURN_VAL(priv->popupMenuProxy, false);
     1531
     1532    if (selectedIndex >= eina_list_count(priv->popupMenuItems))
     1533        return false;
     1534
     1535    priv->popupMenuProxy->valueChanged(selectedIndex);
     1536
     1537    return true;
     1538}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h

    r126207 r126866  
    8484#endif
    8585
     86/// Enum values containing text directionality values.
     87typedef enum {
     88    EWK_TEXT_DIRECTION_RIGHT_TO_LEFT,
     89    EWK_TEXT_DIRECTION_LEFT_TO_RIGHT
     90} Ewk_Text_Direction;
     91
    8692typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
    8793typedef struct _Ewk_View_Smart_Class Ewk_View_Smart_Class;
     
    9197    Evas_Smart_Class sc; /**< all but 'data' is free to be changed. */
    9298    unsigned long version;
     99
     100    Eina_Bool (*popup_menu_show)(Ewk_View_Smart_Data *sd, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Eina_List *items, int selected_index);
     101    Eina_Bool (*popup_menu_hide)(Ewk_View_Smart_Data *sd);
    93102
    94103    // event handling:
     
    109118 * in the @a Ewk_View_Smart_Class structure.
    110119 */
    111 #define EWK_VIEW_SMART_CLASS_VERSION 1UL
     120#define EWK_VIEW_SMART_CLASS_VERSION 2UL
    112121
    113122/**
     
    121130 * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
    122131 */
    123 #define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0}
     132#define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
    124133
    125134/**
     
    591600EAPI Eina_Bool ewk_view_text_find_highlight_clear(Evas_Object *o);
    592601
     602/**
     603 * Selects index of current popup menu.
     604 *
     605 * @param o view object contains popup menu.
     606 * @param index index of item to select
     607 *
     608 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (probably
     609 *         popup menu is not selected or index is out of range)
     610 */
     611EAPI Eina_Bool ewk_view_popup_menu_select(Evas_Object *o, unsigned int index);
     612
     613/**
     614 * Closes current popup menu.
     615 *
     616 * @param o view object contains popup menu.
     617 *
     618 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure (probably
     619 *         popup menu is not selected)
     620 */
     621EAPI Eina_Bool ewk_view_popup_menu_close(Evas_Object *o);
     622
    593623#ifdef __cplusplus
    594624}
  • trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_private.h

    r124989 r126866  
    2424#include "WebPageProxy.h"
    2525#include <Evas.h>
     26#include <WebCore/TextDirection.h>
    2627#include <WebKit2/WKBase.h>
     28#include <wtf/Vector.h>
    2729
    2830namespace WebCore {
     
    3032class IntRect;
    3133class IntSize;
     34}
     35
     36namespace WebKit {
     37class WebPopupItem;
     38class WebPopupMenuProxyEfl;
    3239}
    3340
     
    9097#endif
    9198
     99void ewk_view_popup_menu_request(Evas_Object* ewkView, WebKit::WebPopupMenuProxyEfl* popupMenu, const WebCore::IntRect&, WebCore::TextDirection, double pageScaleFactor, const Vector<WebKit::WebPopupItem>& items, int32_t selectedIndex);
     100
    92101#endif // ewk_view_private_h
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp

    r125974 r126866  
    2222
    2323#include "EWK2UnitTestEnvironment.h"
    24 #include <EWebKit2.h>
    2524#include <Ecore.h>
    2625#include <glib-object.h>
     
    4342    : m_ecoreEvas(0)
    4443    , m_webView(0)
     44    , m_ewkViewClass(EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("Browser_View"))
    4545{
     46    ewk_view_smart_class_set(&m_ewkViewClass);
    4647}
    4748
     
    6162    Evas* evas = ecore_evas_get(m_ecoreEvas);
    6263
    63     m_webView = ewk_view_add(evas);
     64    Evas_Smart* smart = evas_smart_class_new(&m_ewkViewClass.sc);
     65    m_webView = ewk_view_smart_add(evas, smart, ewk_context_default_get());
    6466    ewk_view_theme_set(m_webView, environment->defaultTheme());
    6567
     
    7880void EWK2UnitTestBase::loadUrlSync(const char* url)
    7981{
     82    ewk_view_uri_set(m_webView, url);
     83    waitUntilLoadFinished();
     84}
     85
     86void EWK2UnitTestBase::waitUntilLoadFinished()
     87{
    8088    bool loadFinished = false;
    8189
    8290    evas_object_smart_callback_add(m_webView, "load,finished", onLoadFinished, &loadFinished);
    83     ewk_view_uri_set(m_webView, url);
    8491
    8592    while (!loadFinished)
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h

    r125974 r126866  
    2121#define EWK2UnitTestBase_h
    2222
     23#include <EWebKit2.h>
    2324#include <Ecore_Evas.h>
    2425#include <Evas.h>
     
    3031public:
    3132    Evas_Object* webView() { return m_webView; }
     33    Ewk_View_Smart_Class* ewkViewClass() { return &m_ewkViewClass; }
    3234
    3335protected:
     
    3840
    3941    void loadUrlSync(const char* url);
     42    void waitUntilLoadFinished();
    4043    void waitUntilTitleChangedTo(const char* expectedTitle);
    4144    void mouseClick(int x, int y);
     
    4447    Evas_Object* m_webView;
    4548    Ecore_Evas* m_ecoreEvas;
     49    Ewk_View_Smart_Class m_ewkViewClass;
    4650};
    4751
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp

    r123863 r126866  
    189189    evas_object_smart_callback_del(webView(), "form,submission,request", onFormAboutToBeSubmitted);
    190190}
     191
     192static Eina_Bool showPopupMenu(Ewk_View_Smart_Data* smartData, Eina_Rectangle, Ewk_Text_Direction, double, Eina_List* list, int selectedIndex)
     193{
     194    EXPECT_EQ(selectedIndex, 2);
     195
     196    Ewk_Popup_Menu_Item* item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 0));
     197    EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM);
     198    EXPECT_STREQ(ewk_popup_menu_item_text_get(item), "first");
     199
     200    item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 1));
     201    EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM);
     202    EXPECT_STREQ(ewk_popup_menu_item_text_get(item), "second");
     203
     204    item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 2));
     205    EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM);
     206    EXPECT_STREQ(ewk_popup_menu_item_text_get(item), "third");
     207
     208    item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 3));
     209    EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_UNKNOWN);
     210    EXPECT_STREQ(ewk_popup_menu_item_text_get(item), 0);
     211
     212    EXPECT_TRUE(ewk_view_popup_menu_select(smartData->self, 0));
     213    return true;
     214}
     215
     216TEST_F(EWK2UnitTestBase, ewk_view_popup_menu_select)
     217{
     218    const char* selectHTML =
     219        "<!doctype html><body><select onchange=\"document.title=this.value;\">"
     220        "<option>first</option><option>second</option><option selected>third</option>"
     221        "</select></body>";
     222
     223    ewkViewClass()->popup_menu_show = showPopupMenu;
     224
     225    ewk_view_html_string_load(webView(), selectHTML, "file:///", 0);
     226    waitUntilLoadFinished();
     227    mouseClick(30, 20);
     228    waitUntilTitleChangedTo("first");
     229
     230    EXPECT_TRUE(ewk_view_popup_menu_close(webView()));
     231    EXPECT_FALSE(ewk_view_popup_menu_select(webView(), 0));
     232}
Note: See TracChangeset for help on using the changeset viewer.