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) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserv
ed. |
6 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 6 * (C) 2006 Alexey Proskuryakov (ap@nypop.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 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
343 } | 343 } |
344 } | 344 } |
345 } | 345 } |
346 | 346 |
347 void HTMLFormElement::submit(Event* event, bool activateSubmitButton) | 347 void HTMLFormElement::submit(Event* event, bool activateSubmitButton) |
348 { | 348 { |
349 FrameView* view = document().view(); | 349 FrameView* view = document().view(); |
350 LocalFrame* frame = document().frame(); | 350 LocalFrame* frame = document().frame(); |
351 if (!view || !frame || !frame->page()) | 351 if (!view || !frame || !frame->page()) |
352 return; | 352 return; |
353 // See crbug.com/586749. | 353 |
| 354 // https://html.spec.whatwg.org/multipage/forms.html#form-submission-algorit
hm |
| 355 // 2. If form document is not connected, has no associated browsing context, |
| 356 // or its active sandboxing flag set has its sandboxed forms browsing |
| 357 // context flag set, then abort these steps without doing anything. |
354 if (!isConnected()) | 358 if (!isConnected()) |
355 UseCounter::count(document(), UseCounter::FormSubmissionNotInDocumentTre
e); | 359 return; |
356 | 360 |
357 if (m_isSubmitting) | 361 if (m_isSubmitting) |
358 return; | 362 return; |
359 | 363 |
360 // Delay dispatching 'close' to dialog until done submitting. | 364 // Delay dispatching 'close' to dialog until done submitting. |
361 EventQueueScope scopeForDialogClose; | 365 EventQueueScope scopeForDialogClose; |
362 AutoReset<bool> submitScope(&m_isSubmitting, true); | 366 AutoReset<bool> submitScope(&m_isSubmitting, true); |
363 | 367 |
364 HTMLFormControlElement* firstSuccessfulSubmitButton = nullptr; | 368 HTMLFormControlElement* firstSuccessfulSubmitButton = nullptr; |
365 bool needButtonActivation = activateSubmitButton; // do we need to activate
a submit button? | 369 bool needButtonActivation = activateSubmitButton; // do we need to activate
a submit button? |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
795 { | 799 { |
796 for (const auto& control : associatedElements()) { | 800 for (const auto& control : associatedElements()) { |
797 if (!control->isFormControlElement()) | 801 if (!control->isFormControlElement()) |
798 continue; | 802 continue; |
799 if (toHTMLFormControlElement(control)->canBeSuccessfulSubmitButton()) | 803 if (toHTMLFormControlElement(control)->canBeSuccessfulSubmitButton()) |
800 toHTMLFormControlElement(control)->pseudoStateChanged(CSSSelector::P
seudoDefault); | 804 toHTMLFormControlElement(control)->pseudoStateChanged(CSSSelector::P
seudoDefault); |
801 } | 805 } |
802 } | 806 } |
803 | 807 |
804 } // namespace blink | 808 } // namespace blink |
OLD | NEW |