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

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

Issue 1865813002: Remove RawPtr from Source/web/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 months 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 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
273 { 273 {
274 if (!*m_userGestureObserved && UserGestureIndicator::processedUserGestureSin ceLoad()) { 274 if (!*m_userGestureObserved && UserGestureIndicator::processedUserGestureSin ceLoad()) {
275 *m_userGestureObserved = true; 275 *m_userGestureObserved = true;
276 if (m_client) 276 if (m_client)
277 m_client->firstUserGestureObserved(); 277 m_client->firstUserGestureObserved();
278 } 278 }
279 } 279 }
280 280
281 class EmptyEventListener final : public EventListener { 281 class EmptyEventListener final : public EventListener {
282 public: 282 public:
283 static RawPtr<EmptyEventListener> create() 283 static EmptyEventListener* create()
284 { 284 {
285 return new EmptyEventListener(); 285 return new EmptyEventListener();
286 } 286 }
287 287
288 bool operator==(const EventListener& other) const override 288 bool operator==(const EventListener& other) const override
289 { 289 {
290 return this == &other; 290 return this == &other;
291 } 291 }
292 292
293 private: 293 private:
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after
1087 // page. 1087 // page.
1088 if (m_pagePopup) { 1088 if (m_pagePopup) {
1089 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event)); 1089 m_pagePopup->handleKeyEvent(PlatformKeyboardEventBuilder(event));
1090 // We need to ignore the next Char event after this otherwise pressing 1090 // We need to ignore the next Char event after this otherwise pressing
1091 // enter when selecting an item in the popup will go to the page. 1091 // enter when selecting an item in the popup will go to the page.
1092 if (WebInputEvent::RawKeyDown == event.type) 1092 if (WebInputEvent::RawKeyDown == event.type)
1093 m_suppressNextKeypressEvent = true; 1093 m_suppressNextKeypressEvent = true;
1094 return WebInputEventResult::HandledSystem; 1094 return WebInputEventResult::HandledSystem;
1095 } 1095 }
1096 1096
1097 RawPtr<Frame> focusedFrame = focusedCoreFrame(); 1097 Frame* focusedFrame = focusedCoreFrame();
1098 if (focusedFrame && focusedFrame->isRemoteFrame()) { 1098 if (focusedFrame && focusedFrame->isRemoteFrame()) {
1099 WebRemoteFrameImpl* webFrame = WebRemoteFrameImpl::fromFrame(*toRemoteFr ame(focusedFrame.get())); 1099 WebRemoteFrameImpl* webFrame = WebRemoteFrameImpl::fromFrame(*toRemoteFr ame(focusedFrame));
1100 webFrame->client()->forwardInputEvent(&event); 1100 webFrame->client()->forwardInputEvent(&event);
1101 return WebInputEventResult::HandledSystem; 1101 return WebInputEventResult::HandledSystem;
1102 } 1102 }
1103 1103
1104 if (!focusedFrame || !focusedFrame->isLocalFrame()) 1104 if (!focusedFrame || !focusedFrame->isLocalFrame())
1105 return WebInputEventResult::NotHandled; 1105 return WebInputEventResult::NotHandled;
1106 1106
1107 LocalFrame* frame = toLocalFrame(focusedFrame.get()); 1107 LocalFrame* frame = toLocalFrame(focusedFrame);
1108 1108
1109 PlatformKeyboardEventBuilder evt(event); 1109 PlatformKeyboardEventBuilder evt(event);
1110 1110
1111 WebInputEventResult result = frame->eventHandler().keyEvent(evt); 1111 WebInputEventResult result = frame->eventHandler().keyEvent(evt);
1112 if (result != WebInputEventResult::NotHandled) { 1112 if (result != WebInputEventResult::NotHandled) {
1113 if (WebInputEvent::RawKeyDown == event.type) { 1113 if (WebInputEvent::RawKeyDown == event.type) {
1114 // Suppress the next keypress event unless the focused node is a plu gin node. 1114 // Suppress the next keypress event unless the focused node is a plu gin node.
1115 // (Flash needs these keypress events to handle non-US keyboards.) 1115 // (Flash needs these keypress events to handle non-US keyboards.)
1116 Element* element = focusedElement(); 1116 Element* element = focusedElement();
1117 if (element && element->layoutObject() && element->layoutObject()->i sEmbeddedObject()) { 1117 if (element && element->layoutObject() && element->layoutObject()->i sEmbeddedObject()) {
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 { 1541 {
1542 ContextMenuAllowedScope scope; 1542 ContextMenuAllowedScope scope;
1543 Frame* focusedFrame = page()->focusController().focusedOrMainFrame(); 1543 Frame* focusedFrame = page()->focusController().focusedOrMainFrame();
1544 if (!focusedFrame->isLocalFrame()) 1544 if (!focusedFrame->isLocalFrame())
1545 return WebInputEventResult::NotHandled; 1545 return WebInputEventResult::NotHandled;
1546 return toLocalFrame(focusedFrame)->eventHandler().sendContextMenuEventFo rKey(nullptr); 1546 return toLocalFrame(focusedFrame)->eventHandler().sendContextMenuEventFo rKey(nullptr);
1547 } 1547 }
1548 } 1548 }
1549 #endif 1549 #endif
1550 1550
1551 void WebViewImpl::showContextMenuAtPoint(float x, float y, RawPtr<ContextMenuPro vider> menuProvider) 1551 void WebViewImpl::showContextMenuAtPoint(float x, float y, ContextMenuProvider* menuProvider)
1552 { 1552 {
1553 if (!page()->mainFrame()->isLocalFrame()) 1553 if (!page()->mainFrame()->isLocalFrame())
1554 return; 1554 return;
1555 { 1555 {
1556 ContextMenuAllowedScope scope; 1556 ContextMenuAllowedScope scope;
1557 page()->contextMenuController().clearContextMenu(); 1557 page()->contextMenuController().clearContextMenu();
1558 page()->contextMenuController().showContextMenuAtPoint(page()->deprecate dLocalMainFrame(), x, y, menuProvider); 1558 page()->contextMenuController().showContextMenuAtPoint(page()->deprecate dLocalMainFrame(), x, y, menuProvider);
1559 } 1559 }
1560 } 1560 }
1561 1561
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after
2167 UIEventWithKeyState::clearNewTabModifierSetFromIsolatedWorld(); 2167 UIEventWithKeyState::clearNewTabModifierSetFromIsolatedWorld();
2168 2168
2169 if (isPointerLocked() && WebInputEvent::isMouseEventType(inputEvent.type)) { 2169 if (isPointerLocked() && WebInputEvent::isMouseEventType(inputEvent.type)) {
2170 pointerLockMouseEvent(inputEvent); 2170 pointerLockMouseEvent(inputEvent);
2171 return WebInputEventResult::HandledSystem; 2171 return WebInputEventResult::HandledSystem;
2172 } 2172 }
2173 2173
2174 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) { 2174 if (m_mouseCaptureNode && WebInputEvent::isMouseEventType(inputEvent.type)) {
2175 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type); 2175 TRACE_EVENT1("input", "captured mouse event", "type", inputEvent.type);
2176 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it. 2176 // Save m_mouseCaptureNode since mouseCaptureLost() will clear it.
2177 RawPtr<Node> node = m_mouseCaptureNode; 2177 Node* node = m_mouseCaptureNode;
2178 2178
2179 // Not all platforms call mouseCaptureLost() directly. 2179 // Not all platforms call mouseCaptureLost() directly.
2180 if (inputEvent.type == WebInputEvent::MouseUp) 2180 if (inputEvent.type == WebInputEvent::MouseUp)
2181 mouseCaptureLost(); 2181 mouseCaptureLost();
2182 2182
2183 OwnPtr<UserGestureIndicator> gestureIndicator; 2183 OwnPtr<UserGestureIndicator> gestureIndicator;
2184 2184
2185 AtomicString eventType; 2185 AtomicString eventType;
2186 switch (inputEvent.type) { 2186 switch (inputEvent.type) {
2187 case WebInputEvent::MouseMove: 2187 case WebInputEvent::MouseMove:
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
2243 { 2243 {
2244 TRACE_EVENT_ASYNC_END0("input", "capturing mouse", this); 2244 TRACE_EVENT_ASYNC_END0("input", "capturing mouse", this);
2245 m_mouseCaptureNode = nullptr; 2245 m_mouseCaptureNode = nullptr;
2246 } 2246 }
2247 2247
2248 void WebViewImpl::setFocus(bool enable) 2248 void WebViewImpl::setFocus(bool enable)
2249 { 2249 {
2250 m_page->focusController().setFocused(enable); 2250 m_page->focusController().setFocused(enable);
2251 if (enable) { 2251 if (enable) {
2252 m_page->focusController().setActive(true); 2252 m_page->focusController().setActive(true);
2253 RawPtr<LocalFrame> focusedFrame = m_page->focusController().focusedFrame (); 2253 LocalFrame* focusedFrame = m_page->focusController().focusedFrame();
2254 if (focusedFrame) { 2254 if (focusedFrame) {
2255 Element* element = focusedFrame->document()->focusedElement(); 2255 Element* element = focusedFrame->document()->focusedElement();
2256 if (element && focusedFrame->selection().selection().isNone()) { 2256 if (element && focusedFrame->selection().selection().isNone()) {
2257 // If the selection was cleared while the WebView was not 2257 // If the selection was cleared while the WebView was not
2258 // focused, then the focus element shows with a focus ring but 2258 // focused, then the focus element shows with a focus ring but
2259 // no caret and does respond to keyboard inputs. 2259 // no caret and does respond to keyboard inputs.
2260 if (element->isTextFormControl()) { 2260 if (element->isTextFormControl()) {
2261 element->updateFocusAppearance(SelectionBehaviorOnFocus::Res tore); 2261 element->updateFocusAppearance(SelectionBehaviorOnFocus::Res tore);
2262 } else if (element->isContentEditable()) { 2262 } else if (element->isContentEditable()) {
2263 // updateFocusAppearance() selects all the text of 2263 // updateFocusAppearance() selects all the text of
(...skipping 11 matching lines...) Expand all
2275 2275
2276 // Clear focus on the currently focused frame if any. 2276 // Clear focus on the currently focused frame if any.
2277 if (!m_page) 2277 if (!m_page)
2278 return; 2278 return;
2279 2279
2280 LocalFrame* frame = m_page->mainFrame() && m_page->mainFrame()->isLocalF rame() 2280 LocalFrame* frame = m_page->mainFrame() && m_page->mainFrame()->isLocalF rame()
2281 ? m_page->deprecatedLocalMainFrame() : nullptr; 2281 ? m_page->deprecatedLocalMainFrame() : nullptr;
2282 if (!frame) 2282 if (!frame)
2283 return; 2283 return;
2284 2284
2285 RawPtr<LocalFrame> focusedFrame = m_page->focusController().focusedFrame (); 2285 LocalFrame* focusedFrame = m_page->focusController().focusedFrame();
2286 if (focusedFrame) { 2286 if (focusedFrame) {
2287 // Finish an ongoing composition to delete the composition node. 2287 // Finish an ongoing composition to delete the composition node.
2288 if (focusedFrame->inputMethodController().hasComposition()) { 2288 if (focusedFrame->inputMethodController().hasComposition()) {
2289 WebAutofillClient* autofillClient = WebLocalFrameImpl::fromFrame (focusedFrame.get())->autofillClient(); 2289 WebAutofillClient* autofillClient = WebLocalFrameImpl::fromFrame (focusedFrame)->autofillClient();
2290 2290
2291 if (autofillClient) 2291 if (autofillClient)
2292 autofillClient->setIgnoreTextChanges(true); 2292 autofillClient->setIgnoreTextChanges(true);
2293 2293
2294 focusedFrame->inputMethodController().confirmComposition(); 2294 focusedFrame->inputMethodController().confirmComposition();
2295 2295
2296 if (autofillClient) 2296 if (autofillClient)
2297 autofillClient->setIgnoreTextChanges(false); 2297 autofillClient->setIgnoreTextChanges(false);
2298 } 2298 }
2299 m_imeAcceptEvents = false; 2299 m_imeAcceptEvents = false;
(...skipping 596 matching lines...) Expand 10 before | Expand all | Expand 10 after
2896 Frame* frame = page()->focusController().focusedOrMainFrame(); 2896 Frame* frame = page()->focusController().focusedOrMainFrame();
2897 if (frame->isLocalFrame()) { 2897 if (frame->isLocalFrame()) {
2898 if (Document* document = toLocalFrame(frame)->document()) 2898 if (Document* document = toLocalFrame(frame)->document())
2899 document->clearFocusedElement(); 2899 document->clearFocusedElement();
2900 } 2900 }
2901 page()->focusController().setInitialFocus(reverse ? WebFocusTypeBackward : W ebFocusTypeForward); 2901 page()->focusController().setInitialFocus(reverse ? WebFocusTypeBackward : W ebFocusTypeForward);
2902 } 2902 }
2903 2903
2904 void WebViewImpl::clearFocusedElement() 2904 void WebViewImpl::clearFocusedElement()
2905 { 2905 {
2906 RawPtr<Frame> frame = focusedCoreFrame(); 2906 Frame* frame = focusedCoreFrame();
2907 if (!frame || !frame->isLocalFrame()) 2907 if (!frame || !frame->isLocalFrame())
2908 return; 2908 return;
2909 2909
2910 LocalFrame* localFrame = toLocalFrame(frame.get()); 2910 LocalFrame* localFrame = toLocalFrame(frame);
2911 2911
2912 RawPtr<Document> document = localFrame->document(); 2912 Document* document = localFrame->document();
2913 if (!document) 2913 if (!document)
2914 return; 2914 return;
2915 2915
2916 RawPtr<Element> oldFocusedElement = document->focusedElement(); 2916 Element* oldFocusedElement = document->focusedElement();
2917 document->clearFocusedElement(); 2917 document->clearFocusedElement();
2918 if (!oldFocusedElement) 2918 if (!oldFocusedElement)
2919 return; 2919 return;
2920 2920
2921 // If a text field has focus, we need to make sure the selection controller 2921 // If a text field has focus, we need to make sure the selection controller
2922 // knows to remove selection from it. Otherwise, the text field is still 2922 // knows to remove selection from it. Otherwise, the text field is still
2923 // processing keyboard events even though focus has been moved to the page a nd 2923 // processing keyboard events even though focus has been moved to the page a nd
2924 // keystrokes get eaten as a result. 2924 // keystrokes get eaten as a result.
2925 if (oldFocusedElement->isContentEditable() || oldFocusedElement->isTextFormC ontrol()) 2925 if (oldFocusedElement->isContentEditable() || oldFocusedElement->isTextFormC ontrol())
2926 localFrame->selection().clear(); 2926 localFrame->selection().clear();
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after
3400 } 3400 }
3401 3401
3402 updateMainFrameLayoutSize(); 3402 updateMainFrameLayoutSize();
3403 } 3403 }
3404 3404
3405 void WebViewImpl::updateMainFrameLayoutSize() 3405 void WebViewImpl::updateMainFrameLayoutSize()
3406 { 3406 {
3407 if (m_shouldAutoResize || !mainFrameImpl()) 3407 if (m_shouldAutoResize || !mainFrameImpl())
3408 return; 3408 return;
3409 3409
3410 RawPtr<FrameView> view = mainFrameImpl()->frameView(); 3410 FrameView* view = mainFrameImpl()->frameView();
3411 if (!view) 3411 if (!view)
3412 return; 3412 return;
3413 3413
3414 WebSize layoutSize = m_size; 3414 WebSize layoutSize = m_size;
3415 3415
3416 if (settings()->viewportEnabled()) 3416 if (settings()->viewportEnabled())
3417 layoutSize = pageScaleConstraintsSet().layoutSize(); 3417 layoutSize = pageScaleConstraintsSet().layoutSize();
3418 3418
3419 if (page()->settings().forceZeroLayoutHeight()) 3419 if (page()->settings().forceZeroLayoutHeight())
3420 layoutSize.height = 0; 3420 layoutSize.height = 0;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
3485 scrollableArea->setScrollPosition(DoublePoint::zero(), ProgrammaticS croll); 3485 scrollableArea->setScrollPosition(DoublePoint::zero(), ProgrammaticS croll);
3486 } 3486 }
3487 3487
3488 pageScaleConstraintsSet().setNeedsReset(true); 3488 pageScaleConstraintsSet().setNeedsReset(true);
3489 } 3489 }
3490 3490
3491 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action, 3491 void WebViewImpl::performMediaPlayerAction(const WebMediaPlayerAction& action,
3492 const WebPoint& location) 3492 const WebPoint& location)
3493 { 3493 {
3494 HitTestResult result = hitTestResultForViewportPos(location); 3494 HitTestResult result = hitTestResultForViewportPos(location);
3495 RawPtr<Node> node = result.innerNode(); 3495 Node* node = result.innerNode();
3496 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node)) 3496 if (!isHTMLVideoElement(*node) && !isHTMLAudioElement(*node))
3497 return; 3497 return;
3498 3498
3499 RawPtr<HTMLMediaElement> mediaElement = static_pointer_cast<HTMLMediaElement >(node); 3499 HTMLMediaElement* mediaElement = toHTMLMediaElement(node);
3500 switch (action.type) { 3500 switch (action.type) {
3501 case WebMediaPlayerAction::Play: 3501 case WebMediaPlayerAction::Play:
3502 if (action.enable) 3502 if (action.enable)
3503 mediaElement->play(); 3503 mediaElement->play();
3504 else 3504 else
3505 mediaElement->pause(); 3505 mediaElement->pause();
3506 break; 3506 break;
3507 case WebMediaPlayerAction::Mute: 3507 case WebMediaPlayerAction::Mute:
3508 mediaElement->setMuted(action.enable); 3508 mediaElement->setMuted(action.enable);
3509 break; 3509 break;
3510 case WebMediaPlayerAction::Loop: 3510 case WebMediaPlayerAction::Loop:
3511 mediaElement->setLoop(action.enable); 3511 mediaElement->setLoop(action.enable);
3512 break; 3512 break;
3513 case WebMediaPlayerAction::Controls: 3513 case WebMediaPlayerAction::Controls:
3514 mediaElement->setBooleanAttribute(HTMLNames::controlsAttr, action.enable ); 3514 mediaElement->setBooleanAttribute(HTMLNames::controlsAttr, action.enable );
3515 break; 3515 break;
3516 default: 3516 default:
3517 ASSERT_NOT_REACHED(); 3517 ASSERT_NOT_REACHED();
3518 } 3518 }
3519 } 3519 }
3520 3520
3521 void WebViewImpl::performPluginAction(const WebPluginAction& action, 3521 void WebViewImpl::performPluginAction(const WebPluginAction& action,
3522 const WebPoint& location) 3522 const WebPoint& location)
3523 { 3523 {
3524 // FIXME: Location is probably in viewport coordinates 3524 // FIXME: Location is probably in viewport coordinates
3525 HitTestResult result = hitTestResultForRootFramePos(location); 3525 HitTestResult result = hitTestResultForRootFramePos(location);
3526 RawPtr<Node> node = result.innerNode(); 3526 Node* node = result.innerNode();
3527 if (!isHTMLObjectElement(*node) && !isHTMLEmbedElement(*node)) 3527 if (!isHTMLObjectElement(*node) && !isHTMLEmbedElement(*node))
3528 return; 3528 return;
3529 3529
3530 LayoutObject* object = node->layoutObject(); 3530 LayoutObject* object = node->layoutObject();
3531 if (object && object->isLayoutPart()) { 3531 if (object && object->isLayoutPart()) {
3532 Widget* widget = toLayoutPart(object)->widget(); 3532 Widget* widget = toLayoutPart(object)->widget();
3533 if (widget && widget->isPluginContainer()) { 3533 if (widget && widget->isPluginContainer()) {
3534 WebPluginContainerImpl* plugin = toWebPluginContainerImpl(widget); 3534 WebPluginContainerImpl* plugin = toWebPluginContainerImpl(widget);
3535 switch (action.type) { 3535 switch (action.type) {
3536 case WebPluginAction::Rotate90Clockwise: 3536 case WebPluginAction::Rotate90Clockwise:
(...skipping 1057 matching lines...) Expand 10 before | Expand all | Expand 10 after
4594 { 4594 {
4595 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than 4595 // TODO(oshima): Investigate if this should return the ScreenInfo's scale fa ctor rather than
4596 // page's scale factor, which can be 1 in use-zoom-for-dsf mode. 4596 // page's scale factor, which can be 1 in use-zoom-for-dsf mode.
4597 if (!page()) 4597 if (!page())
4598 return 1; 4598 return 1;
4599 4599
4600 return page()->deviceScaleFactor(); 4600 return page()->deviceScaleFactor();
4601 } 4601 }
4602 4602
4603 } // namespace blink 4603 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebViewImpl.h ('k') | third_party/WebKit/Source/web/WorkerContentSettingsClient.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698