Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(325)

Side by Side Diff: Source/web/WebViewImpl.cpp

Issue 737853002: Refactor Autofill for OOPIF, step 1: add autofillClient to WebLocalFrame (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 2020 matching lines...) Expand 10 before | Expand all | Expand 10 after
2031 return EventTypeNames::touchend; 2031 return EventTypeNames::touchend;
2032 case WebInputEvent::TouchCancel: 2032 case WebInputEvent::TouchCancel:
2033 return EventTypeNames::touchcancel; 2033 return EventTypeNames::touchcancel;
2034 default: 2034 default:
2035 return String("unknown"); 2035 return String("unknown");
2036 } 2036 }
2037 } 2037 }
2038 2038
2039 bool WebViewImpl::handleInputEvent(const WebInputEvent& inputEvent) 2039 bool WebViewImpl::handleInputEvent(const WebInputEvent& inputEvent)
2040 { 2040 {
2041 UserGestureNotifier notifier(m_autofillClient, &m_userGestureObserved); 2041 WebAutofillClient* autofillClient = m_autofillClient ? m_autofillClient :
2042 mainFrameImpl() ? mainFrameImpl()->autofillClient() : 0;
2043 UserGestureNotifier notifier(autofillClient, &m_userGestureObserved);
2042 // On the first input event since page load, |notifier| instructs the 2044 // On the first input event since page load, |notifier| instructs the
2043 // autofill client to unblock values of password input fields of any forms 2045 // autofill client to unblock values of password input fields of any forms
2044 // on the page. There is a single input event, GestureTap, which can both 2046 // on the page. There is a single input event, GestureTap, which can both
2045 // be the first event after page load, and cause a form submission. In that 2047 // be the first event after page load, and cause a form submission. In that
2046 // case, the form submission happens before the autofill client is told 2048 // case, the form submission happens before the autofill client is told
2047 // to unblock the password values, and so the password values are not 2049 // to unblock the password values, and so the password values are not
2048 // submitted. To avoid that, GestureTap is handled explicitly: 2050 // submitted. To avoid that, GestureTap is handled explicitly:
2049 if (inputEvent.type == WebInputEvent::GestureTap && m_autofillClient) { 2051 if (inputEvent.type == WebInputEvent::GestureTap && autofillClient) {
2050 m_userGestureObserved = true; 2052 m_userGestureObserved = true;
2051 m_autofillClient->firstUserGestureObserved(); 2053 autofillClient->firstUserGestureObserved();
2052 } 2054 }
2053 2055
2054 TRACE_EVENT1("input", "WebViewImpl::handleInputEvent", "type", inputTypeToNa me(inputEvent.type).ascii()); 2056 TRACE_EVENT1("input", "WebViewImpl::handleInputEvent", "type", inputTypeToNa me(inputEvent.type).ascii());
2055 // If we've started a drag and drop operation, ignore input events until 2057 // If we've started a drag and drop operation, ignore input events until
2056 // we're done. 2058 // we're done.
2057 if (m_doingDragAndDrop) 2059 if (m_doingDragAndDrop)
2058 return true; 2060 return true;
2059 2061
2060 if (m_devToolsAgent && m_devToolsAgent->handleInputEvent(m_page.get(), input Event)) 2062 if (m_devToolsAgent && m_devToolsAgent->handleInputEvent(m_page.get(), input Event))
2061 return true; 2063 return true;
2062 2064
2063 // Report the event to be NOT processed by WebKit, so that the browser can h andle it appropriately. 2065 // Report the event to be NOT processed by WebKit, so that the browser can h andle it appropriately.
2064 if (m_ignoreInputEvents) 2066 if (m_ignoreInputEvents)
2065 return false; 2067 return false;
2066 2068
2067 TemporaryChange<const WebInputEvent*> currentEventChange(m_currentInputEvent , &inputEvent); 2069 TemporaryChange<const WebInputEvent*> currentEventChange(m_currentInputEvent , &inputEvent);
2068 2070
2069 if (isPointerLocked() && WebInputEvent::isMouseEventType(inputEvent.type)) { 2071 if (isPointerLocked() && WebInputEvent::isMouseEventType(inputEvent.type)) {
2070 pointerLockMouseEvent(inputEvent); 2072 pointerLockMouseEvent(inputEvent);
2071 return true; 2073 return true;
2072 } 2074 }
2073 2075
2074 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) { 2076 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) {
2075 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type); 2077 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type);
2076 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it. 2078 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it.
2077 RefPtrWillBeRawPtr<Node> node = m_mouseCaptureNode; 2079 RefPtrWillBeRawPtr<Node> node = m_mouseCaptureNode;
2078 2080
2079 // Not all platforms call mouseCaptureLost() directly. 2081 // Not all platforms call mouseCaptureLost() directly.
2080 if (inputEvent.type == WebInputEvent::MouseUp) 2082 if (inputEvent.type == WebInputEvent::MouseUp)
2081 mouseCaptureLost(); 2083 mouseCaptureLost();
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2160 2162
2161 LocalFrame* frame = m_page->mainFrame() && m_page->mainFrame()->isLocalF rame() 2163 LocalFrame* frame = m_page->mainFrame() && m_page->mainFrame()->isLocalF rame()
2162 ? m_page->deprecatedLocalMainFrame() : 0; 2164 ? m_page->deprecatedLocalMainFrame() : 0;
2163 if (!frame) 2165 if (!frame)
2164 return; 2166 return;
2165 2167
2166 RefPtrWillBeRawPtr<Frame> focusedFrame = m_page->focusController().focus edFrame(); 2168 RefPtrWillBeRawPtr<Frame> focusedFrame = m_page->focusController().focus edFrame();
2167 if (focusedFrame && focusedFrame->isLocalFrame()) { 2169 if (focusedFrame && focusedFrame->isLocalFrame()) {
2168 // Finish an ongoing composition to delete the composition node. 2170 // Finish an ongoing composition to delete the composition node.
2169 if (toLocalFrame(focusedFrame.get())->inputMethodController().hasCom position()) { 2171 if (toLocalFrame(focusedFrame.get())->inputMethodController().hasCom position()) {
2170 if (m_autofillClient) 2172 WebAutofillClient* autofillClient = m_autofillClient ? m_autofil lClient :
2171 m_autofillClient->setIgnoreTextChanges(true); 2173 WebLocalFrameImpl::fromFrame(toLocalFrame(focusedFrame.get() ))->autofillClient();
2174
2175 if (autofillClient)
2176 autofillClient->setIgnoreTextChanges(true);
2172 2177
2173 toLocalFrame(focusedFrame.get())->inputMethodController().confir mComposition(); 2178 toLocalFrame(focusedFrame.get())->inputMethodController().confir mComposition();
2174 2179
2175 if (m_autofillClient) 2180 if (autofillClient)
2176 m_autofillClient->setIgnoreTextChanges(false); 2181 autofillClient->setIgnoreTextChanges(false);
2177 } 2182 }
2178 m_imeAcceptEvents = false; 2183 m_imeAcceptEvents = false;
2179 } 2184 }
2180 } 2185 }
2181 } 2186 }
2182 2187
2183 bool WebViewImpl::setComposition( 2188 bool WebViewImpl::setComposition(
2184 const WebString& text, 2189 const WebString& text,
2185 const WebVector<WebCompositionUnderline>& underlines, 2190 const WebVector<WebCompositionUnderline>& underlines,
2186 int selectionStart, 2191 int selectionStart,
(...skipping 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after
3561 m_dragOperation = WebDragOperationNone; 3566 m_dragOperation = WebDragOperationNone;
3562 m_currentDragData = nullptr; 3567 m_currentDragData = nullptr;
3563 } 3568 }
3564 3569
3565 void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint, 3570 void WebViewImpl::dragTargetDrop(const WebPoint& clientPoint,
3566 const WebPoint& screenPoint, 3571 const WebPoint& screenPoint,
3567 int keyModifiers) 3572 int keyModifiers)
3568 { 3573 {
3569 ASSERT(m_currentDragData); 3574 ASSERT(m_currentDragData);
3570 3575
3571 UserGestureNotifier notifier(m_autofillClient, &m_userGestureObserved); 3576 WebAutofillClient* autofillClient = m_autofillClient ? m_autofillClient :
3577 mainFrameImpl() ? mainFrameImpl()->autofillClient() : 0;
3578 UserGestureNotifier notifier(autofillClient, &m_userGestureObserved);
3572 3579
3573 // If this webview transitions from the "drop accepting" state to the "not 3580 // If this webview transitions from the "drop accepting" state to the "not
3574 // accepting" state, then our IPC message reply indicating that may be in- 3581 // accepting" state, then our IPC message reply indicating that may be in-
3575 // flight, or else delayed by javascript processing in this webview. If a 3582 // flight, or else delayed by javascript processing in this webview. If a
3576 // drop happens before our IPC reply has reached the browser process, then 3583 // drop happens before our IPC reply has reached the browser process, then
3577 // the browser forwards the drop to this webview. So only allow a drop to 3584 // the browser forwards the drop to this webview. So only allow a drop to
3578 // proceed if our webview m_dragOperation state is not DragOperationNone. 3585 // proceed if our webview m_dragOperation state is not DragOperationNone.
3579 3586
3580 if (m_dragOperation == WebDragOperationNone) { // IPC RACE CONDITION: do not allow this drop. 3587 if (m_dragOperation == WebDragOperationNone) { // IPC RACE CONDITION: do not allow this drop.
3581 dragTargetDragLeave(); 3588 dragTargetDragLeave();
(...skipping 931 matching lines...) Expand 10 before | Expand all | Expand 10 after
4513 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width 4520 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width
4514 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1); 4521 || (constraints.minimumScale == constraints.maximumScale && constraints. minimumScale != -1);
4515 } 4522 }
4516 4523
4517 void WebViewImpl::forceNextWebGLContextCreationToFail() 4524 void WebViewImpl::forceNextWebGLContextCreationToFail()
4518 { 4525 {
4519 WebGLRenderingContext::forceNextWebGLContextCreationToFail(); 4526 WebGLRenderingContext::forceNextWebGLContextCreationToFail();
4520 } 4527 }
4521 4528
4522 } // namespace blink 4529 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698