Chromium Code Reviews| Index: Source/core/page/FocusController.cpp |
| diff --git a/Source/core/page/FocusController.cpp b/Source/core/page/FocusController.cpp |
| index aa083b5815785588fb729980527d7ca5f403bc01..abdc0f5977a751ed421ec345e32e84cc95f098f3 100644 |
| --- a/Source/core/page/FocusController.cpp |
| +++ b/Source/core/page/FocusController.cpp |
| @@ -262,6 +262,31 @@ void FocusController::setFocusedFrame(PassRefPtr<Frame> frame) |
| m_page->chrome().client().focusedFrameChanged(newFrame.get()); |
| } |
| +void FocusController::focusDocumentView(PassRefPtr<Frame> frame) |
| +{ |
| + ASSERT(!frame || frame->page() == m_page); |
| + if (m_focusedFrame == frame) |
| + return; |
| + |
| + RefPtr<LocalFrame> focusedFrame = (m_focusedFrame && m_focusedFrame->isLocalFrame()) ? toLocalFrame(m_focusedFrame.get()) : 0; |
| + if (focusedFrame && focusedFrame->view()) { |
| + RefPtr<Document> document = focusedFrame->document(); |
| + Element* focusedElement = document ? document->focusedElement() : 0; |
| + if (focusedElement) |
| + focusedElement->dispatchBlurEvent(0); |
|
tkent
2014/04/23 02:23:31
We need to dispatch 'focusout' and 'DOMFocusOut' e
gnana
2014/04/23 12:21:51
Done.
|
| + } |
| + |
| + RefPtr<LocalFrame> newFocusedFrame = (frame && frame->isLocalFrame()) ? toLocalFrame(frame.get()) : 0; |
| + if (newFocusedFrame && newFocusedFrame->view()) { |
| + RefPtr<Document> document = newFocusedFrame->document(); |
| + Element* focusedElement = document ? document->focusedElement() : 0; |
| + if (focusedElement) |
| + focusedElement->dispatchFocusEvent(0, FocusTypePage); |
|
tkent
2014/04/23 02:23:31
We need to dispatch 'focusin' and 'DOMFocusIn' eve
gnana
2014/04/23 12:21:51
Done.
|
| + } |
| + |
| + setFocusedFrame(frame); |
| +} |
| + |
| Frame* FocusController::focusedOrMainFrame() const |
| { |
| if (Frame* frame = focusedFrame()) |