Changeset 244072 in webkit
- Timestamp:
- Apr 9, 2019 2:01:35 AM (5 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r244068 r244072 1 2019-04-09 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [ATK] Cleanup WebKitAccessibleHyperlink 4 https://bugs.webkit.org/show_bug.cgi?id=196602 5 6 Reviewed by Michael Catanzaro. 7 8 Cleanups: 9 10 - Rename webkitAccessibleHyperlinkNew() as webkitAccessibleHyperlinkGetOrCreate() and move the code to get/set 11 the object data here. 12 - Use WEBKIT_DEFINE_TYPE instead of custom type registration. This ensures that all CStrings used in private 13 struct are no longer leaked. 14 - Remove all confusing core() functions and simply use webkitAccessibleGetAccessibilityObject(). 15 - Use nullptr instead of 0 and other coding style issues. 16 17 * accessibility/atk/WebKitAccessibleHyperlink.cpp: 18 (webkitAccessibleHyperlinkActionDoAction): 19 (webkitAccessibleHyperlinkActionGetNActions): 20 (webkitAccessibleHyperlinkActionGetDescription): 21 (webkitAccessibleHyperlinkActionGetKeybinding): 22 (webkitAccessibleHyperlinkActionGetName): 23 (atk_action_interface_init): 24 (webkitAccessibleHyperlinkGetURI): 25 (webkitAccessibleHyperlinkGetObject): 26 (rangeLengthForObject): 27 (webkitAccessibleHyperlinkGetStartIndex): 28 (webkitAccessibleHyperlinkGetEndIndex): 29 (webkitAccessibleHyperlinkIsValid): 30 (webkitAccessibleHyperlinkGetNAnchors): 31 (webkitAccessibleHyperlinkIsSelectedLink): 32 (webkitAccessibleHyperlinkGetProperty): 33 (webkitAccessibleHyperlinkSetProperty): 34 (webkit_accessible_hyperlink_class_init): 35 (webkitAccessibleHyperlinkGetOrCreate): 36 (core): Deleted. 37 (atkActionInterfaceInit): Deleted. 38 (getRangeLengthForObject): Deleted. 39 (webkitAccessibleHyperlinkFinalize): Deleted. 40 (webkitAccessibleHyperlinkClassInit): Deleted. 41 (webkitAccessibleHyperlinkInit): Deleted. 42 (webkitAccessibleHyperlinkGetType): Deleted. 43 (webkitAccessibleHyperlinkNew): Deleted. 44 (webkitAccessibleHyperlinkGetAccessibilityObject): Deleted. 45 * accessibility/atk/WebKitAccessibleHyperlink.h: 46 * accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp: 47 (webkitAccessibleHyperlinkImplGetHyperlink): 48 (webkitAccessibleHyperlinkImplInterfaceInit): 49 1 50 2019-04-08 Simon Fraser <simon.fraser@apple.com> 2 51 -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.cpp
r243970 r244072 35 35 #include "WebKitAccessible.h" 36 36 #include "WebKitAccessibleUtil.h" 37 #include <wtf/glib/WTFGType.h> 37 38 #include <wtf/text/CString.h> 38 39 39 #include <atk/atk.h>40 #include <glib.h>41 42 40 using namespace WebCore; 41 42 static void webkit_accessible_hyperlink_atk_action_interface_init(AtkActionIface*); 43 43 44 44 struct _WebKitAccessibleHyperlinkPrivate { … … 50 50 }; 51 51 52 #define WEBKIT_ACCESSIBLE_HYPERLINK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlinkPrivate)) 52 WEBKIT_DEFINE_TYPE_WITH_CODE( 53 WebKitAccessibleHyperlink, webkit_accessible_hyperlink, ATK_TYPE_HYPERLINK, 54 G_IMPLEMENT_INTERFACE(ATK_TYPE_ACTION, webkit_accessible_hyperlink_atk_action_interface_init)) 53 55 54 56 enum { … … 58 60 }; 59 61 60 static gpointer webkitAccessibleHyperlinkParentClass = 0; 61 62 static AccessibilityObject* core(WebKitAccessible* accessible) 63 { 64 if (!accessible || !WEBKIT_IS_ACCESSIBLE(accessible)) 65 return 0; 66 67 return &webkitAccessibleGetAccessibilityObject(accessible); 68 } 69 70 static AccessibilityObject* core(WebKitAccessibleHyperlink* link) 71 { 72 if (!link) 73 return 0; 74 75 return core(link->priv->hyperlinkImpl); 76 } 77 78 static AccessibilityObject* core(AtkHyperlink* link) 79 { 80 if (!WEBKIT_IS_ACCESSIBLE_HYPERLINK(link)) 81 return 0; 82 83 return core(WEBKIT_ACCESSIBLE_HYPERLINK(link)); 84 } 85 86 static AccessibilityObject* core(AtkAction* action) 87 { 88 return core(WEBKIT_ACCESSIBLE_HYPERLINK(action)); 89 } 90 91 92 static gboolean webkitAccessibleHyperlinkActionDoAction(AtkAction* action, gint index) 93 { 94 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), FALSE); 95 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, FALSE); 96 g_return_val_if_fail(!index, FALSE); 97 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, FALSE); 98 99 if (!ATK_IS_ACTION(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl)) 62 static gboolean webkitAccessibleHyperlinkActionDoAction(AtkAction* action, gint) 63 { 64 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(action); 65 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, FALSE); 66 67 if (!ATK_IS_ACTION(accessibleHyperlink->priv->hyperlinkImpl)) 100 68 return FALSE; 101 69 102 AccessibilityObject* coreObject = core(action); 103 if (!coreObject) 104 return FALSE; 105 106 return coreObject->performDefaultAction(); 70 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 71 return coreObject.performDefaultAction(); 107 72 } 108 73 109 74 static gint webkitAccessibleHyperlinkActionGetNActions(AtkAction* action) 110 75 { 111 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 112 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 113 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 114 115 if (!ATK_IS_ACTION(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl)) 116 return 0; 117 118 return 1; 119 } 120 121 static const gchar* webkitAccessibleHyperlinkActionGetDescription(AtkAction* action, gint index) 122 { 123 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 124 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 125 g_return_val_if_fail(!index, 0); 126 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 76 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(action); 77 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, 0); 78 79 return ATK_IS_ACTION(accessibleHyperlink->priv->hyperlinkImpl) ? 1 : 0; 80 } 81 82 static const gchar* webkitAccessibleHyperlinkActionGetDescription(AtkAction* action, gint) 83 { 84 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(action); 85 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, nullptr); 127 86 128 87 // TODO: Need a way to provide/localize action descriptions. … … 131 90 } 132 91 133 static const gchar* webkitAccessibleHyperlinkActionGetKeybinding(AtkAction* action, gint index) 134 { 135 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 136 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 137 g_return_val_if_fail(!index, 0); 138 139 WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv; 140 returnValIfWebKitAccessibleIsInvalid(priv->hyperlinkImpl, 0); 141 142 if (!ATK_IS_ACTION(priv->hyperlinkImpl)) 143 return 0; 144 145 AccessibilityObject* coreObject = core(action); 146 if (!coreObject) 147 return 0; 148 149 priv->actionKeyBinding = coreObject->accessKey().string().utf8(); 150 return priv->actionKeyBinding.data(); 151 } 152 153 static const gchar* webkitAccessibleHyperlinkActionGetName(AtkAction* action, gint index) 154 { 155 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(action), 0); 156 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv->hyperlinkImpl, 0); 157 g_return_val_if_fail(!index, 0); 158 159 WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(action)->priv; 160 returnValIfWebKitAccessibleIsInvalid(priv->hyperlinkImpl, 0); 161 162 if (!ATK_IS_ACTION(priv->hyperlinkImpl)) 163 return 0; 164 165 AccessibilityObject* coreObject = core(action); 166 if (!coreObject) 167 return 0; 168 169 priv->actionName = coreObject->actionVerb().utf8(); 170 return priv->actionName.data(); 171 } 172 173 static void atkActionInterfaceInit(AtkActionIface* iface) 92 static const gchar* webkitAccessibleHyperlinkActionGetKeybinding(AtkAction* action, gint) 93 { 94 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(action); 95 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, nullptr); 96 97 if (!ATK_IS_ACTION(accessibleHyperlink->priv->hyperlinkImpl)) 98 return nullptr; 99 100 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 101 accessibleHyperlink->priv->actionKeyBinding = coreObject.accessKey().string().utf8(); 102 return accessibleHyperlink->priv->actionKeyBinding.data(); 103 } 104 105 static const gchar* webkitAccessibleHyperlinkActionGetName(AtkAction* action, gint) 106 { 107 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(action); 108 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, nullptr); 109 110 if (!ATK_IS_ACTION(accessibleHyperlink->priv->hyperlinkImpl)) 111 return nullptr; 112 113 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 114 accessibleHyperlink->priv->actionName = coreObject.actionVerb().utf8(); 115 return accessibleHyperlink->priv->actionName.data(); 116 } 117 118 static void webkit_accessible_hyperlink_atk_action_interface_init(AtkActionIface* iface) 174 119 { 175 120 iface->do_action = webkitAccessibleHyperlinkActionDoAction; … … 182 127 static gchar* webkitAccessibleHyperlinkGetURI(AtkHyperlink* link, gint index) 183 128 { 184 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0);185 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0);186 187 129 // FIXME: Do NOT support more than one instance of an AtkObject 188 130 // implementing AtkHyperlinkImpl in every instance of AtkHyperLink 189 g_return_val_if_fail(!index, 0); 190 191 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 192 193 AccessibilityObject* coreObject = core(link); 194 if (!coreObject || coreObject->url().isNull()) 195 return 0; 196 197 return g_strdup(coreObject->url().string().utf8().data()); 131 if (index) 132 return nullptr; 133 134 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 135 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, nullptr); 136 137 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 138 return !coreObject.url().isNull() ? g_strdup(coreObject.url().string().utf8().data()) : nullptr; 198 139 } 199 140 200 141 static AtkObject* webkitAccessibleHyperlinkGetObject(AtkHyperlink* link, gint index) 201 142 { 202 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0);203 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0);204 205 143 // FIXME: Do NOT support more than one instance of an AtkObject 206 144 // implementing AtkHyperlinkImpl in every instance of AtkHyperLink 207 g_return_val_if_fail(!index, 0); 208 209 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 210 211 return ATK_OBJECT(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl); 212 } 213 214 static gint getRangeLengthForObject(AccessibilityObject* obj, Range* range) 145 if (index) 146 return nullptr; 147 148 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 149 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, 0); 150 151 return ATK_OBJECT(accessibleHyperlink->priv->hyperlinkImpl); 152 } 153 154 static gint rangeLengthForObject(AccessibilityObject& obj, Range* range) 215 155 { 216 156 // This is going to be the actual length in most of the cases … … 219 159 // Check whether the current hyperlink belongs to a list item. 220 160 // If so, we need to consider the length of the item's marker 221 AccessibilityObject* parent = obj ->parentObjectUnignored();161 AccessibilityObject* parent = obj.parentObjectUnignored(); 222 162 if (!parent || !parent->isAccessibilityRenderObject() || !parent->isListItem()) 223 163 return baseLength; … … 241 181 static gint webkitAccessibleHyperlinkGetStartIndex(AtkHyperlink* link) 242 182 { 243 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 244 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 245 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 246 247 AccessibilityObject* coreObject = core(link); 248 if (!coreObject) 249 return 0; 250 251 AccessibilityObject* parentUnignored = coreObject->parentObjectUnignored(); 183 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 184 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, 0); 185 186 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 187 AccessibilityObject* parentUnignored = coreObject.parentObjectUnignored(); 252 188 if (!parentUnignored) 253 189 return 0; 254 190 255 Node* node = coreObject ->node();191 Node* node = coreObject.node(); 256 192 if (!node) 257 193 return 0; … … 262 198 263 199 auto range = Range::create(node->document(), firstPositionInOrBeforeNode(parentNode), firstPositionInOrBeforeNode(node)); 264 return getRangeLengthForObject(coreObject, range.ptr());200 return rangeLengthForObject(coreObject, range.ptr()); 265 201 } 266 202 267 203 static gint webkitAccessibleHyperlinkGetEndIndex(AtkHyperlink* link) 268 204 { 269 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 270 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 271 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 272 273 AccessibilityObject* coreObject = core(link); 274 if (!coreObject) 275 return 0; 276 277 AccessibilityObject* parentUnignored = coreObject->parentObjectUnignored(); 205 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 206 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, 0); 207 208 auto& coreObject = webkitAccessibleGetAccessibilityObject(accessibleHyperlink->priv->hyperlinkImpl); 209 AccessibilityObject* parentUnignored = coreObject.parentObjectUnignored(); 278 210 if (!parentUnignored) 279 211 return 0; 280 212 281 Node* node = coreObject ->node();213 Node* node = coreObject.node(); 282 214 if (!node) 283 215 return 0; … … 288 220 289 221 auto range = Range::create(node->document(), firstPositionInOrBeforeNode(parentNode), lastPositionInOrAfterNode(node)); 290 return getRangeLengthForObject(coreObject, range.ptr());222 return rangeLengthForObject(coreObject, range.ptr()); 291 223 } 292 224 293 225 static gboolean webkitAccessibleHyperlinkIsValid(AtkHyperlink* link) 294 226 { 295 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), FALSE); 296 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 297 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 227 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 228 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, FALSE); 298 229 299 230 // Link is valid for the whole object's lifetime … … 305 236 // FIXME Do NOT support more than one instance of an AtkObject 306 237 // implementing AtkHyperlinkImpl in every instance of AtkHyperLink 307 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 308 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 309 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, 0); 238 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 239 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, 0); 310 240 311 241 return 1; … … 314 244 static gboolean webkitAccessibleHyperlinkIsSelectedLink(AtkHyperlink* link) 315 245 { 316 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), FALSE); 317 g_return_val_if_fail(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 318 returnValIfWebKitAccessibleIsInvalid(WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl, FALSE); 246 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(link); 247 returnValIfWebKitAccessibleIsInvalid(accessibleHyperlink->priv->hyperlinkImpl, FALSE); 319 248 320 249 // Not implemented: this function is deprecated in ATK now … … 325 254 static void webkitAccessibleHyperlinkGetProperty(GObject* object, guint propId, GValue* value, GParamSpec* pspec) 326 255 { 256 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(object); 257 327 258 switch (propId) { 328 259 case PROP_HYPERLINK_IMPL: 329 g_value_set_object(value, WEBKIT_ACCESSIBLE_HYPERLINK(object)->priv->hyperlinkImpl);260 g_value_set_object(value, accessibleHyperlink->priv->hyperlinkImpl); 330 261 break; 331 262 default: … … 336 267 static void webkitAccessibleHyperlinkSetProperty(GObject* object, guint propId, const GValue* value, GParamSpec* pspec) 337 268 { 338 WebKitAccessibleHyperlinkPrivate* priv = WEBKIT_ACCESSIBLE_HYPERLINK(object)->priv;269 auto* accessibleHyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(object); 339 270 340 271 switch (propId) { 341 272 case PROP_HYPERLINK_IMPL: 342 // No need to check and unref previous values of 343 // priv->hyperlinkImpl as this is a CONSTRUCT ONLY property 344 priv->hyperlinkImpl = WEBKIT_ACCESSIBLE(g_value_get_object(value)); 345 g_object_weak_ref(G_OBJECT(priv->hyperlinkImpl), (GWeakNotify)(GCallback)g_object_unref, object); 273 accessibleHyperlink->priv->hyperlinkImpl = WEBKIT_ACCESSIBLE(g_value_get_object(value)); 346 274 break; 347 275 default: … … 350 278 } 351 279 352 static void webkitAccessibleHyperlinkFinalize(GObject* object) 353 { 354 G_OBJECT_CLASS(webkitAccessibleHyperlinkParentClass)->finalize(object); 355 } 356 357 static void webkitAccessibleHyperlinkClassInit(AtkHyperlinkClass* klass) 280 static void webkit_accessible_hyperlink_class_init(WebKitAccessibleHyperlinkClass* klass) 358 281 { 359 282 GObjectClass* gobjectClass = G_OBJECT_CLASS(klass); 360 361 webkitAccessibleHyperlinkParentClass = g_type_class_peek_parent(klass);362 363 gobjectClass->finalize = webkitAccessibleHyperlinkFinalize;364 283 gobjectClass->set_property = webkitAccessibleHyperlinkSetProperty; 365 284 gobjectClass->get_property = webkitAccessibleHyperlinkGetProperty; 366 285 367 klass->get_uri = webkitAccessibleHyperlinkGetURI; 368 klass->get_object = webkitAccessibleHyperlinkGetObject; 369 klass->get_start_index = webkitAccessibleHyperlinkGetStartIndex; 370 klass->get_end_index = webkitAccessibleHyperlinkGetEndIndex; 371 klass->is_valid = webkitAccessibleHyperlinkIsValid; 372 klass->get_n_anchors = webkitAccessibleHyperlinkGetNAnchors; 373 klass->is_selected_link = webkitAccessibleHyperlinkIsSelectedLink; 286 AtkHyperlinkClass* atkHyperlinkClass = ATK_HYPERLINK_CLASS(klass); 287 atkHyperlinkClass->get_uri = webkitAccessibleHyperlinkGetURI; 288 atkHyperlinkClass->get_object = webkitAccessibleHyperlinkGetObject; 289 atkHyperlinkClass->get_start_index = webkitAccessibleHyperlinkGetStartIndex; 290 atkHyperlinkClass->get_end_index = webkitAccessibleHyperlinkGetEndIndex; 291 atkHyperlinkClass->is_valid = webkitAccessibleHyperlinkIsValid; 292 atkHyperlinkClass->get_n_anchors = webkitAccessibleHyperlinkGetNAnchors; 293 atkHyperlinkClass->is_selected_link = webkitAccessibleHyperlinkIsSelectedLink; 374 294 375 295 g_object_class_install_property(gobjectClass, PROP_HYPERLINK_IMPL, … … 378 298 "The associated WebKitAccessible instance.", 379 299 WEBKIT_TYPE_ACCESSIBLE, 380 (GParamFlags)(G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS))); 381 382 g_type_class_add_private(gobjectClass, sizeof(WebKitAccessibleHyperlinkPrivate)); 383 } 384 385 static void webkitAccessibleHyperlinkInit(AtkHyperlink* link) 386 { 387 WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv = WEBKIT_ACCESSIBLE_HYPERLINK_GET_PRIVATE(link); 388 WEBKIT_ACCESSIBLE_HYPERLINK(link)->priv->hyperlinkImpl = nullptr; 389 } 390 391 GType webkitAccessibleHyperlinkGetType() 392 { 393 static volatile gsize typeVolatile = 0; 394 395 if (g_once_init_enter(&typeVolatile)) { 396 static const GTypeInfo tinfo = { 397 sizeof(WebKitAccessibleHyperlinkClass), 398 (GBaseInitFunc) 0, 399 (GBaseFinalizeFunc) 0, 400 (GClassInitFunc)(GCallback) webkitAccessibleHyperlinkClassInit, 401 (GClassFinalizeFunc) 0, 402 0, /* class data */ 403 sizeof(WebKitAccessibleHyperlink), /* instance size */ 404 0, /* nb preallocs */ 405 (GInstanceInitFunc)(GCallback) webkitAccessibleHyperlinkInit, 406 0 /* value table */ 407 }; 408 409 static const GInterfaceInfo actionInfo = { 410 (GInterfaceInitFunc)(GCallback)atkActionInterfaceInit, 411 (GInterfaceFinalizeFunc) 0, 0 412 }; 413 414 GType type = g_type_register_static(ATK_TYPE_HYPERLINK, "WebKitAccessibleHyperlink", &tinfo, GTypeFlags(0)); 415 g_type_add_interface_static(type, ATK_TYPE_ACTION, &actionInfo); 416 417 g_once_init_leave(&typeVolatile, type); 418 } 419 420 return typeVolatile; 421 } 422 423 WebKitAccessibleHyperlink* webkitAccessibleHyperlinkNew(AtkHyperlinkImpl* hyperlinkImpl) 424 { 425 g_return_val_if_fail(ATK_IS_HYPERLINK_IMPL(hyperlinkImpl), 0); 426 return WEBKIT_ACCESSIBLE_HYPERLINK(g_object_new(WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, "hyperlink-impl", hyperlinkImpl, 0)); 427 } 428 429 WebCore::AccessibilityObject* webkitAccessibleHyperlinkGetAccessibilityObject(WebKitAccessibleHyperlink* link) 430 { 431 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE_HYPERLINK(link), 0); 432 return core(link); 300 static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY))); 301 } 302 303 WebKitAccessibleHyperlink* webkitAccessibleHyperlinkGetOrCreate(AtkHyperlinkImpl* hyperlinkImpl) 304 { 305 g_return_val_if_fail(ATK_IS_HYPERLINK_IMPL(hyperlinkImpl), nullptr); 306 g_return_val_if_fail(WEBKIT_IS_ACCESSIBLE(hyperlinkImpl), nullptr); 307 308 if (auto* currentHyperLink = g_object_get_data(G_OBJECT(hyperlinkImpl), "webkit-accessible-hyperlink-object")) 309 return WEBKIT_ACCESSIBLE_HYPERLINK(g_object_ref(currentHyperLink)); 310 311 auto* hyperlink = WEBKIT_ACCESSIBLE_HYPERLINK(g_object_new(WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, "hyperlink-impl", hyperlinkImpl, nullptr)); 312 g_object_set_data_full(G_OBJECT(hyperlinkImpl), "webkit-accessible-hyperlink-object", hyperlink, g_object_unref); 313 return hyperlink; 433 314 } 434 315 -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleHyperlink.h
r208179 r244072 24 24 #include <atk/atk.h> 25 25 26 namespace WebCore {27 class AccessibilityObject;28 }29 30 26 G_BEGIN_DECLS 31 27 32 #define WEBKIT_TYPE_ACCESSIBLE_HYPERLINK (webkitAccessibleHyperlinkGetType())33 #define WEBKIT_ACCESSIBLE_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlink))34 #define WEBKIT_ACCESSIBLE_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlinkClass))35 #define WEBKIT_IS_ACCESSIBLE_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK))36 #define WEBKIT_IS_ACCESSIBLE_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK))37 #define WEBKIT_ACCESSIBLE_HYPERLINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlinkClass))28 #define WEBKIT_TYPE_ACCESSIBLE_HYPERLINK (webkit_accessible_hyperlink_get_type()) 29 #define WEBKIT_ACCESSIBLE_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlink)) 30 #define WEBKIT_ACCESSIBLE_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlinkClass)) 31 #define WEBKIT_IS_ACCESSIBLE_HYPERLINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK)) 32 #define WEBKIT_IS_ACCESSIBLE_HYPERLINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK)) 33 #define WEBKIT_ACCESSIBLE_HYPERLINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_ACCESSIBLE_HYPERLINK, WebKitAccessibleHyperlinkClass)) 38 34 39 typedef struct _WebKitAccessibleHyperlink 40 typedef struct _WebKitAccessibleHyperlinkClass 41 typedef struct _WebKitAccessibleHyperlinkPrivate 35 typedef struct _WebKitAccessibleHyperlink WebKitAccessibleHyperlink; 36 typedef struct _WebKitAccessibleHyperlinkClass WebKitAccessibleHyperlinkClass; 37 typedef struct _WebKitAccessibleHyperlinkPrivate WebKitAccessibleHyperlinkPrivate; 42 38 43 39 struct _WebKitAccessibleHyperlink { 44 40 AtkHyperlink parent; 45 41 46 // private47 42 WebKitAccessibleHyperlinkPrivate *priv; 48 43 }; … … 52 47 }; 53 48 54 GType webkit AccessibleHyperlinkGetType(void) G_GNUC_CONST;49 GType webkit_accessible_hyperlink_get_type(void); 55 50 56 WebKitAccessibleHyperlink* webkitAccessibleHyperlinkNew(AtkHyperlinkImpl*); 57 58 WebCore::AccessibilityObject* webkitAccessibleHyperlinkGetAccessibilityObject(WebKitAccessibleHyperlink*); 51 WebKitAccessibleHyperlink* webkitAccessibleHyperlinkGetOrCreate(AtkHyperlinkImpl*); 59 52 60 53 G_END_DECLS -
trunk/Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceHyperlinkImpl.cpp
r139159 r244072 25 25 #include "WebKitAccessibleHyperlink.h" 26 26 27 using namespace WebCore;28 29 static GQuark hyperlinkObjectQuark = 0;30 31 27 static AtkHyperlink* webkitAccessibleHyperlinkImplGetHyperlink(AtkHyperlinkImpl* hyperlink) 32 28 { 33 AtkHyperlink* hyperlinkObject = ATK_HYPERLINK(g_object_get_qdata(G_OBJECT(hyperlink), hyperlinkObjectQuark)); 34 if (!hyperlinkObject) { 35 hyperlinkObject = ATK_HYPERLINK(webkitAccessibleHyperlinkNew(hyperlink)); 36 g_object_set_qdata(G_OBJECT(hyperlink), hyperlinkObjectQuark, hyperlinkObject); 37 } 38 return hyperlinkObject; 29 return ATK_HYPERLINK(webkitAccessibleHyperlinkGetOrCreate(hyperlink)); 39 30 } 40 31 … … 42 33 { 43 34 iface->get_hyperlink = webkitAccessibleHyperlinkImplGetHyperlink; 44 hyperlinkObjectQuark = g_quark_from_static_string("webkit-accessible-hyperlink-object");45 35 } 46 36 47 #endif 37 #endif // HAVE(ACCESSIBILITY)
Note: See TracChangeset
for help on using the changeset viewer.