Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2000 Simon Hausmann <hausmann@kde.org> | 4 * (C) 2000 Simon Hausmann <hausmann@kde.org> |
| 5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. | 5 * Copyright (C) 2003, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserv ed. |
| 6 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 6 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 int x = absolutePosition.x(); | 140 int x = absolutePosition.x(); |
| 141 int y = absolutePosition.y(); | 141 int y = absolutePosition.y(); |
| 142 url.append('?'); | 142 url.append('?'); |
| 143 url.appendNumber(x); | 143 url.appendNumber(x); |
| 144 url.append(','); | 144 url.append(','); |
| 145 url.appendNumber(y); | 145 url.appendNumber(y); |
| 146 } | 146 } |
| 147 | 147 |
| 148 void HTMLAnchorElement::defaultEventHandler(Event* event) | 148 void HTMLAnchorElement::defaultEventHandler(Event* event) |
| 149 { | 149 { |
| 150 if (isLink()) { | 150 if (isLiveLink()) { |
| 151 if (focused() && isEnterKeyKeydownEvent(event) && isLiveLink()) { | 151 if (isLinkEnterKey(event)) { |
| 152 event->setDefaultHandled(); | 152 event->setDefaultHandled(); |
| 153 dispatchSimulatedClick(event); | 153 dispatchSimulatedClick(event); |
| 154 return; | 154 return; |
| 155 } | 155 } |
| 156 | 156 |
| 157 if (isLinkClick(event) && isLiveLink()) { | 157 if (isLinkClick(event)) { |
| 158 handleClick(event); | 158 handleClick(event); |
| 159 return; | 159 return; |
| 160 } | 160 } |
| 161 } | 161 } |
| 162 | 162 |
| 163 HTMLElement::defaultEventHandler(event); | 163 HTMLElement::defaultEventHandler(event); |
| 164 } | 164 } |
| 165 | 165 |
| 166 void HTMLAnchorElement::setActive(bool down) | 166 void HTMLAnchorElement::setActive(bool down) |
| 167 { | 167 { |
| (...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 356 } else { | 356 } else { |
| 357 request.setRequestContext(blink::WebURLRequest::RequestContextHyperlink) ; | 357 request.setRequestContext(blink::WebURLRequest::RequestContextHyperlink) ; |
| 358 FrameLoadRequest frameRequest(&document(), request, getAttribute(targetA ttr)); | 358 FrameLoadRequest frameRequest(&document(), request, getAttribute(targetA ttr)); |
| 359 frameRequest.setTriggeringEvent(event); | 359 frameRequest.setTriggeringEvent(event); |
| 360 if (hasRel(RelationNoReferrer)) | 360 if (hasRel(RelationNoReferrer)) |
| 361 frameRequest.setShouldSendReferrer(NeverSendReferrer); | 361 frameRequest.setShouldSendReferrer(NeverSendReferrer); |
| 362 frame->loader().load(frameRequest); | 362 frame->loader().load(frameRequest); |
| 363 } | 363 } |
| 364 } | 364 } |
| 365 | 365 |
| 366 bool HTMLAnchorElement::isLinkEnterKey(Event* event) | |
| 367 { | |
| 368 if (isEnterKeyKeydownEvent(event)) { | |
| 369 if (focused()) | |
| 370 return true; | |
| 371 | |
| 372 ASSERT(event->target()); | |
| 373 Node* target = event->target()->toNode(); | |
| 374 ASSERT(target); | |
| 375 | |
| 376 // if the target element is one of form controls or has contentEditable attribute on, | |
| 377 // we shouldn't simulate click action | |
| 378 if (target->focused() && !((target->isElementNode() && toElement(target) ->isFormControlElement()) || target->isContentEditable())) | |
|
robwu
2014/10/03 13:28:40
This logic is insufficient, because some form cont
| |
| 379 return true; | |
| 380 } | |
| 381 return false; | |
| 382 } | |
| 383 | |
| 366 bool isEnterKeyKeydownEvent(Event* event) | 384 bool isEnterKeyKeydownEvent(Event* event) |
| 367 { | 385 { |
| 368 return event->type() == EventTypeNames::keydown && event->isKeyboardEvent() && toKeyboardEvent(event)->keyIdentifier() == "Enter"; | 386 return event->type() == EventTypeNames::keydown && event->isKeyboardEvent() && toKeyboardEvent(event)->keyIdentifier() == "Enter"; |
| 369 } | 387 } |
| 370 | 388 |
| 371 bool isLinkClick(Event* event) | 389 bool isLinkClick(Event* event) |
| 372 { | 390 { |
| 373 return event->type() == EventTypeNames::click && (!event->isMouseEvent() || toMouseEvent(event)->button() != RightButton); | 391 return event->type() == EventTypeNames::click && (!event->isMouseEvent() || toMouseEvent(event)->button() != RightButton); |
| 374 } | 392 } |
| 375 | 393 |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 391 Vector<String> argv; | 409 Vector<String> argv; |
| 392 argv.append("a"); | 410 argv.append("a"); |
| 393 argv.append(fastGetAttribute(hrefAttr)); | 411 argv.append(fastGetAttribute(hrefAttr)); |
| 394 activityLogger->logEvent("blinkAddElement", argv.size(), argv.data() ); | 412 activityLogger->logEvent("blinkAddElement", argv.size(), argv.data() ); |
| 395 } | 413 } |
| 396 } | 414 } |
| 397 return HTMLElement::insertedInto(insertionPoint); | 415 return HTMLElement::insertedInto(insertionPoint); |
| 398 } | 416 } |
| 399 | 417 |
| 400 } | 418 } |
| OLD | NEW |