Changeset 127686 in webkit
- Timestamp:
- Sep 5, 2012 8:58:27 PM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r127655 r127686 1 2012-09-05 Ryuan Choi <ryuan.choi@samsung.com> 2 3 [EFL][WK2] Implement missing feature to support <select> tag 4 https://bugs.webkit.org/show_bug.cgi?id=95708 5 6 Reviewed by Gyuyoung Kim. 7 8 Added missing APIs for select tag. 9 10 This patch provides all functionality of current WebPopupItem to applications. 11 12 * UIProcess/API/efl/ewk_popup_menu_item.cpp: 13 (_Ewk_Popup_Menu_Item): 14 (_Ewk_Popup_Menu_Item::_Ewk_Popup_Menu_Item): 15 (ewk_popup_menu_item_new): 16 (ewk_popup_menu_item_text_direction_get): 17 (ewk_popup_menu_item_text_direction_override_get): 18 (ewk_popup_menu_item_tooltip_get): 19 (ewk_popup_menu_item_accessibility_text_get): 20 (ewk_popup_menu_item_enabled_get): 21 (ewk_popup_menu_item_is_label_get): 22 (ewk_popup_menu_item_selected_get): 23 * UIProcess/API/efl/ewk_popup_menu_item.h: 24 * UIProcess/API/efl/ewk_popup_menu_item_private.h: 25 * UIProcess/API/efl/ewk_view.cpp: 26 (ewk_view_popup_menu_request): 27 * UIProcess/API/efl/tests/test_ewk2_view.cpp: 28 (checkBasicPopupMenuItem): 29 (showPopupMenu): Updated test case to cover new APIs. 30 (TEST_F): 31 1 32 2012-09-05 Christophe Dumez <christophe.dumez@intel.com> 2 33 -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.cpp
r126866 r127686 30 30 #include "ewk_popup_menu_item_private.h" 31 31 #include "ewk_private.h" 32 #include <wtf/text/CString.h> 32 33 33 34 using namespace WebKit; … … 39 40 struct _Ewk_Popup_Menu_Item { 40 41 Ewk_Popup_Menu_Item_Type type; 42 Ewk_Text_Direction textDirection; 43 44 bool hasTextDirectionOverride; 45 bool isEnabled; 46 bool isLabel; 47 bool isSelected; 48 41 49 WKEinaSharedString text; 50 WKEinaSharedString toolTip; 51 WKEinaSharedString accessibilityText; 42 52 43 _Ewk_Popup_Menu_Item(Ewk_Popup_Menu_Item_Type _type, const char* _text) 44 : type(_type) 45 , text(_text) 53 explicit _Ewk_Popup_Menu_Item(const WebKit::WebPopupItem& item) 54 : type(static_cast<Ewk_Popup_Menu_Item_Type>(item.m_type)) 55 , textDirection(static_cast<Ewk_Text_Direction>(item.m_textDirection)) 56 , hasTextDirectionOverride(item.m_hasTextDirectionOverride) 57 , isEnabled(item.m_isEnabled) 58 , isLabel(item.m_isLabel) 59 , isSelected(item.m_isSelected) 60 , text(item.m_text.utf8().data()) 61 , toolTip(item.m_toolTip.utf8().data()) 62 , accessibilityText(item.m_accessibilityText.utf8().data()) 46 63 { } 47 64 }; … … 54 71 * Constructs a Ewk_Popup_Menu_Item. 55 72 */ 56 Ewk_Popup_Menu_Item* ewk_popup_menu_item_new( WebPopupItem::Type type, const char* text)73 Ewk_Popup_Menu_Item* ewk_popup_menu_item_new(const WebKit::WebPopupItem& item) 57 74 { 58 return new Ewk_Popup_Menu_Item( static_cast<Ewk_Popup_Menu_Item_Type>(type), text);75 return new Ewk_Popup_Menu_Item(item); 59 76 } 60 77 … … 82 99 return item->text; 83 100 } 101 102 Ewk_Text_Direction ewk_popup_menu_item_text_direction_get(const Ewk_Popup_Menu_Item* item) 103 { 104 EINA_SAFETY_ON_NULL_RETURN_VAL(item, EWK_TEXT_DIRECTION_LEFT_TO_RIGHT); 105 106 return item->textDirection; 107 } 108 109 Eina_Bool ewk_popup_menu_item_text_direction_override_get(const Ewk_Popup_Menu_Item* item) 110 { 111 EINA_SAFETY_ON_NULL_RETURN_VAL(item, false); 112 113 return item->hasTextDirectionOverride; 114 } 115 116 const char* ewk_popup_menu_item_tooltip_get(const Ewk_Popup_Menu_Item* item) 117 { 118 EINA_SAFETY_ON_NULL_RETURN_VAL(item, 0); 119 120 return item->toolTip; 121 } 122 123 const char* ewk_popup_menu_item_accessibility_text_get(const Ewk_Popup_Menu_Item* item) 124 { 125 EINA_SAFETY_ON_NULL_RETURN_VAL(item, 0); 126 127 return item->accessibilityText; 128 } 129 130 Eina_Bool ewk_popup_menu_item_enabled_get(const Ewk_Popup_Menu_Item* item) 131 { 132 EINA_SAFETY_ON_NULL_RETURN_VAL(item, false); 133 134 return item->isEnabled; 135 } 136 137 Eina_Bool ewk_popup_menu_item_is_label_get(const Ewk_Popup_Menu_Item* item) 138 { 139 EINA_SAFETY_ON_NULL_RETURN_VAL(item, false); 140 141 return item->isLabel; 142 } 143 144 Eina_Bool ewk_popup_menu_item_selected_get(const Ewk_Popup_Menu_Item* item) 145 { 146 EINA_SAFETY_ON_NULL_RETURN_VAL(item, false); 147 148 return item->isSelected; 149 } -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item.h
r126866 r127686 32 32 #define ewk_popup_menu_item_h 33 33 34 #include "ewk_view.h" 34 35 #include <Eina.h> 35 36 … … 70 71 EAPI const char *ewk_popup_menu_item_text_get(const Ewk_Popup_Menu_Item *item); 71 72 73 /** 74 * Returns text direction of the popup menu item. 75 * 76 * @param item the popup menu item instance 77 * 78 * @return the text direction of the @a item. 79 */ 80 EAPI Ewk_Text_Direction ewk_popup_menu_item_text_direction_get(const Ewk_Popup_Menu_Item *item); 81 82 /** 83 * Returns whether the popup menu item has text direction override. 84 * 85 * @param item the popup menu item instance 86 * 87 * @return @c EINA_TRUE if the popup menu item has text direction override, 88 * @c EINA_FALSE otherwise. 89 */ 90 EAPI Eina_Bool ewk_popup_menu_item_text_direction_override_get(const Ewk_Popup_Menu_Item *item); 91 92 /** 93 * Returns tooltip of the popup menu item. 94 * 95 * @param item the popup menu item instance 96 * 97 * @return the tooltip of the @a item or @c NULL in case of error. This pointer is 98 * guaranteed to be eina_stringshare, so whenever possible 99 * save yourself some cpu cycles and use 100 * eina_stringshare_ref() instead of eina_stringshare_add() or 101 * strdup() 102 */ 103 EAPI const char *ewk_popup_menu_item_tooltip_get(const Ewk_Popup_Menu_Item *item); 104 105 /** 106 * Returns accessibility text of the popup menu item. 107 * 108 * @param item the popup menu item instance 109 * 110 * @return the accessibility text of the @a item or @c NULL in case of error. 111 * This pointer is guaranteed to be eina_stringshare, so whenever 112 * possible save yourself some cpu cycles and use 113 * eina_stringshare_ref() instead of eina_stringshare_add() or 114 * strdup() 115 */ 116 EAPI const char *ewk_popup_menu_item_accessibility_text_get(const Ewk_Popup_Menu_Item *item); 117 118 /** 119 * Returns whether the popup menu item is enabled or not. 120 * 121 * @param item the popup menu item instance 122 * 123 * @return @c EINA_TRUE if ther popup menu item is enabled, @c EINA_FALSE otherwise. 124 */ 125 EAPI Eina_Bool ewk_popup_menu_item_enabled_get(const Ewk_Popup_Menu_Item *item); 126 127 /** 128 * Returns whether the popup menu item is label or not. 129 * 130 * @param item the popup menu item instance 131 * 132 * @return @c EINA_TRUE if the popup menu item is label, @c EINA_FALSE otherwise. 133 */ 134 EAPI Eina_Bool ewk_popup_menu_item_is_label_get(const Ewk_Popup_Menu_Item *item); 135 136 /** 137 * Returns whether the popup menu item is selected or not. 138 * 139 * @param item the popup menu item instance 140 * 141 * @return @c EINA_TRUE if the popup menu item is selected, @c EINA_FALSE otherwise. 142 */ 143 EAPI Eina_Bool ewk_popup_menu_item_selected_get(const Ewk_Popup_Menu_Item *item); 144 72 145 #ifdef __cplusplus 73 146 } -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_popup_menu_item_private.h
r126866 r127686 29 29 #include "WebPopupItem.h" 30 30 31 Ewk_Popup_Menu_Item* ewk_popup_menu_item_new( WebKit::WebPopupItem::Type type, const char* text);31 Ewk_Popup_Menu_Item* ewk_popup_menu_item_new(const WebKit::WebPopupItem& item); 32 32 void ewk_popup_menu_item_free(Ewk_Popup_Menu_Item* item); 33 33 -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp
r127444 r127686 1512 1512 Eina_List* popupItems = 0; 1513 1513 size_t size = items.size(); 1514 for (size_t i = 0; i < size; ++i) { 1515 Ewk_Popup_Menu_Item* item = ewk_popup_menu_item_new(items[i].m_type, items[i].m_text.utf8().data()); 1516 popupItems = eina_list_append(popupItems, item); 1517 } 1514 for (size_t i = 0; i < size; ++i) 1515 popupItems = eina_list_append(popupItems, ewk_popup_menu_item_new(items[i])); 1518 1516 priv->popupMenuItems = popupItems; 1519 1517 -
trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp
r127422 r127686 190 190 } 191 191 192 static inline void checkBasicPopupMenuItem(Ewk_Popup_Menu_Item* item, const char* title, bool enabled) 193 { 194 EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM); 195 EXPECT_STREQ(ewk_popup_menu_item_text_get(item), title); 196 EXPECT_EQ(ewk_popup_menu_item_enabled_get(item), enabled); 197 } 198 192 199 static Eina_Bool selectItemAfterDelayed(void* data) 193 200 { … … 201 208 202 209 Ewk_Popup_Menu_Item* item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 0)); 203 EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM); 204 EXPECT_STREQ(ewk_popup_menu_item_text_get(item), "first"); 210 checkBasicPopupMenuItem(item, "first", true); 211 EXPECT_EQ(ewk_popup_menu_item_text_direction_get(item), EWK_TEXT_DIRECTION_LEFT_TO_RIGHT); 212 EXPECT_STREQ(ewk_popup_menu_item_tooltip_get(item), ""); 213 EXPECT_STREQ(ewk_popup_menu_item_accessibility_text_get(item), ""); 214 EXPECT_FALSE(ewk_popup_menu_item_is_label_get(item)); 215 EXPECT_FALSE(ewk_popup_menu_item_selected_get(item)); 205 216 206 217 item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 1)); 207 EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM);208 EXPECT_ STREQ(ewk_popup_menu_item_text_get(item), "second");218 checkBasicPopupMenuItem(item, "second", false); 219 EXPECT_EQ(ewk_popup_menu_item_enabled_get(item), false); 209 220 210 221 item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 2)); 211 EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_ITEM); 212 EXPECT_STREQ(ewk_popup_menu_item_text_get(item), "third"); 222 checkBasicPopupMenuItem(item, "third", true); 223 EXPECT_EQ(ewk_popup_menu_item_text_direction_get(item), EWK_TEXT_DIRECTION_RIGHT_TO_LEFT); 224 EXPECT_STREQ(ewk_popup_menu_item_tooltip_get(item), "tooltip"); 225 EXPECT_STREQ(ewk_popup_menu_item_accessibility_text_get(item), "aria"); 226 EXPECT_TRUE(ewk_popup_menu_item_selected_get(item)); 213 227 214 228 item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 3)); 229 checkBasicPopupMenuItem(item, "label", false); 230 EXPECT_TRUE(ewk_popup_menu_item_is_label_get(item)); 231 232 item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 4)); 233 checkBasicPopupMenuItem(item, " forth", true); 234 235 item = static_cast<Ewk_Popup_Menu_Item*>(eina_list_nth(list, 5)); 215 236 EXPECT_EQ(ewk_popup_menu_item_type_get(item), EWK_POPUP_MENU_UNKNOWN); 216 237 EXPECT_STREQ(ewk_popup_menu_item_text_get(item), 0); … … 224 245 const char* selectHTML = 225 246 "<!doctype html><body><select onchange=\"document.title=this.value;\">" 226 "<option>first</option><option>second</option><option selected>third</option>" 247 "<option>first</option><option disabled>second</option><option selected dir=\"rtl\" title=\"tooltip\" aria-label=\"aria\">third</option>" 248 "<optgroup label=\"label\"><option>forth</option></optgroup>" 227 249 "</select></body>"; 228 250
Note: See TracChangeset
for help on using the changeset viewer.