Closed Bug 36830 Opened 25 years ago Closed 25 years ago

Single singon not being notified on form submission

Categories

(Core :: DOM: Core & HTML, defect, P3)

defect

Tracking

()

VERIFIED FIXED

People

(Reporter: morse, Assigned: pollmann)

References

()

Details

(Whiteboard: Fix in hand)

Go to http://people.netscape.com/morse/password.htm, fill in form, and press submit button. Expected result: single signon dialog appears asking if you want to save this login. Actual result: no single signon dialog appears. Here is some more information about the problem: 1. I set a breakpoint at the entry point to wallet/single-signon code when a form submission occurs -- specificall the Notify routine in extensions/wallet/src/nsWalletServices.cpp. That breakpoint is never reached. 2. I ran an older version of the browser, set the same breakpoint, and it indeed was hit. Below is the stack trace I obtained when the breakpoint was hit. 3. The caller at the time that the breakpoint was hit was the following lines in nsFormFrame.cpp: for (theEnum->First(); theEnum->IsDone() != NS_OK; theEnum->Next()) { result = theEnum->CurrentItem(getter_AddRefs(inst)); if (NS_SUCCEEDED(result) && inst) { nsCOMPtr<nsIFormSubmitObserver> formSubmitObserver = do_QueryInterface(inst, &result); if (NS_SUCCEEDED(result) && formSubmitObserver) { formSubmitObserver->Notify(mContent); } --> } } 4. Using the latest version, I set a breakpoint in the above code of nsFormFrame.cpp and discovered that the call to theEnum->CurrentItem (in the second line of code) is returning an error. *********** STACK TRACE FROM PREVIOUS VERSION OF BROWSER WalletlibService::Notify(nsWalletlibService * const 0x01fdb358, nsIContent * 0x02b93f4c) line 180 nsFormFrame::OnSubmit(nsFormFrame * const 0x021ace70, nsIPresContext * 0x02e4f480, nsIFrame * 0x021cebf8) line 712 nsHTMLButtonControlFrame::MouseClicked(nsIPresContext * 0x02e4f480) line 339 nsGfxButtonControlFrame::HandleEvent(nsGfxButtonControlFrame * const 0x021cebf8, nsIPresContext * 0x02e4f480, nsGUIEvent * 0x0012f68c, nsEventStatus * 0x0012f9d0) line 646 nsEventStateManager::CheckForAndDispatchClick(nsEventStateManager * const 0x02b88470, nsIPresContext * 0x02e4f480, nsMouseEvent * 0x0012fac4, nsEventStatus * 0x0012f9d0) line 1558 + 30 bytes nsEventStateManager::PostHandleEvent(nsEventStateManager * const 0x02b88470, nsIPresContext * 0x02e4f480, nsGUIEvent * 0x0012fac4, nsIFrame * 0x021cebf8, nsEventStatus * 0x0012f9d0, nsIView * 0x02b91590) line 714 + 24 bytes PresShell::HandleEvent(PresShell * const 0x027ccc14, nsIView * 0x02b91590, nsGUIEvent * 0x0012fac4, nsEventStatus * 0x0012f9d0, int & 1) line 3462 + 43 bytes nsView::HandleEvent(nsView * const 0x02b91590, nsGUIEvent * 0x0012fac4, unsigned int 8, nsEventStatus * 0x0012f9d0, int & 1) line 811 nsView::HandleEvent(nsView * const 0x02b90120, nsGUIEvent * 0x0012fac4, unsigned int 8, nsEventStatus * 0x0012f9d0, int & 1) line 784 nsView::HandleEvent(nsView * const 0x027cd720, nsGUIEvent * 0x0012fac4, unsigned int 28, nsEventStatus * 0x0012f9d0, int & 1) line 784 nsViewManager2::DispatchEvent(nsViewManager2 * const 0x027cd900, nsGUIEvent * 0x0012fac4, nsEventStatus * 0x0012f9d0) line 1354 HandleEvent(nsGUIEvent * 0x0012fac4) line 69 nsWindow::DispatchEvent(nsWindow * const 0x02b91ba4, nsGUIEvent * 0x0012fac4, nsEventStatus & nsEventStatus_eIgnore) line 498 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012fac4) line 519 nsWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 3137 + 21 bytes ChildWindow::DispatchMouseEvent(unsigned int 301, nsPoint * 0x00000000) line 3344 nsWindow::ProcessMessage(unsigned int 514, unsigned int 0, long 5308851, long * 0x0012fd94) line 2322 + 24 bytes nsWindow::WindowProc(HWND__ * 0x06bb06be, unsigned int 514, unsigned int 0, long 5308851) line 676 + 27 bytes USER32! 77e71268() NS_NewScriptHTMLFormControlList(nsIScriptContext *, nsISupports *, nsISupports *, void * *) line 332 + 29 bytes
Keywords: nsbeta2
Hi Steve, sorry about this, it is completely my doing. I have a fix in my tree, which partially backs out Friday's change (bug 33203). I will check this in shortly! Thanks for the great bug report, this made fixing the bug a snap! The problem was that I attempted to streamline the form submit observer interface by making it inherit from nsIObserver and thus remove the need to implement both nsIObserver and nsIFormSubmitObserver. In the method you noticed returning a failure code (theEnum->CurrentItem), it checks to ensure you implement nsIObserver before returning success. I will revert this, and require that all people implementing nsIFormSubmitObserver also implement nsIObserver. Sorry again for any inconvenience this may have caused!
Severity: normal → critical
Status: NEW → ASSIGNED
OS: Windows NT → All
Hardware: PC → All
Whiteboard: Fix in hand
Target Milestone: --- → M16
Fix checked in. To verify, go to Steve's testcase at: http://people.netscape.com/morse/password.htm Submit the form by clicking the button labeled ENTER. You should see a dialog pop up asking if you would like to save your user name and password. Thanks!
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
Clearing nsbeta2 nomination. Bug fixed. Marking VERIFED FIXED on: - MacOS9 2000-04-26-08-M16 Commercial Build - Linux6 2000-04-26-08-M16 Commercial Build - Win98 2000-26-11-M16 Mozilla Build
Status: RESOLVED → VERIFIED
Keywords: nsbeta2
Component: HTML: Form Submission → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.