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

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

Issue 736883002: Implement <select> Popup Menu using PagePopup (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 #include "wtf/OwnPtr.h" 61 #include "wtf/OwnPtr.h"
62 #include "wtf/RefCounted.h" 62 #include "wtf/RefCounted.h"
63 #include "wtf/Vector.h" 63 #include "wtf/Vector.h"
64 64
65 namespace blink { 65 namespace blink {
66 66
67 class DataObject; 67 class DataObject;
68 class Frame; 68 class Frame;
69 class FullscreenController; 69 class FullscreenController;
70 class LinkHighlight; 70 class LinkHighlight;
71 class PopupContainer;
72 class RenderLayerCompositor; 71 class RenderLayerCompositor;
73 class UserGestureToken; 72 class UserGestureToken;
74 class WebActiveGestureAnimation; 73 class WebActiveGestureAnimation;
75 class WebDevToolsAgentPrivate; 74 class WebDevToolsAgentPrivate;
76 class WebLayerTreeView; 75 class WebLayerTreeView;
77 class WebLocalFrameImpl; 76 class WebLocalFrameImpl;
78 class WebImage; 77 class WebImage;
79 class WebPagePopupImpl; 78 class WebPagePopupImpl;
80 class WebPlugin; 79 class WebPlugin;
81 class WebSettingsImpl; 80 class WebSettingsImpl;
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 406
408 // Start a system drag and drop operation. 407 // Start a system drag and drop operation.
409 void startDragging( 408 void startDragging(
410 LocalFrame*, 409 LocalFrame*,
411 const WebDragData& dragData, 410 const WebDragData& dragData,
412 WebDragOperationsMask mask, 411 WebDragOperationsMask mask,
413 const WebImage& dragImage, 412 const WebImage& dragImage,
414 const WebPoint& dragImageOffset); 413 const WebPoint& dragImageOffset);
415 414
416 // Notification that a popup was opened/closed. 415 // Notification that a popup was opened/closed.
417 void popupOpened(PopupContainer*);
418 void popupClosed(PopupContainer*);
419 PagePopup* openPagePopup(PagePopupClient*, const IntRect& originBoundsInRoot View); 416 PagePopup* openPagePopup(PagePopupClient*, const IntRect& originBoundsInRoot View);
420 void closePagePopup(PagePopup*); 417 void closePagePopup(PagePopup*);
421 LocalDOMWindow* pagePopupWindow() const; 418 LocalDOMWindow* pagePopupWindow() const;
422 419
423 // Returns the input event we're currently processing. This is used in some 420 // Returns the input event we're currently processing. This is used in some
424 // cases where the WebCore DOM event doesn't have the information we need. 421 // cases where the WebCore DOM event doesn't have the information we need.
425 static const WebInputEvent* currentInputEvent() 422 static const WebInputEvent* currentInputEvent()
426 { 423 {
427 return m_currentInputEvent; 424 return m_currentInputEvent;
428 } 425 }
429 426
430 GraphicsLayer* rootGraphicsLayer(); 427 GraphicsLayer* rootGraphicsLayer();
431 void setRootGraphicsLayer(GraphicsLayer*); 428 void setRootGraphicsLayer(GraphicsLayer*);
432 void scheduleCompositingLayerSync(); 429 void scheduleCompositingLayerSync();
433 GraphicsLayerFactory* graphicsLayerFactory() const; 430 GraphicsLayerFactory* graphicsLayerFactory() const;
434 RenderLayerCompositor* compositor() const; 431 RenderLayerCompositor* compositor() const;
435 void registerForAnimations(WebLayer*); 432 void registerForAnimations(WebLayer*);
436 void scheduleAnimation(); 433 void scheduleAnimation();
437 434
438 virtual void setVisibilityState(WebPageVisibilityState, bool) override; 435 virtual void setVisibilityState(WebPageVisibilityState, bool) override;
439 436
440 PopupContainer* selectPopup() const { return m_selectPopup.get(); } 437 bool hasOpenedPopup() const { return m_pagePopup; }
441 bool hasOpenedPopup() const { return m_selectPopup || m_pagePopup; }
442 438
443 // Returns true if the event leads to scrolling. 439 // Returns true if the event leads to scrolling.
444 static bool mapKeyCodeForScroll( 440 static bool mapKeyCodeForScroll(
445 int keyCode, 441 int keyCode,
446 ScrollDirection*, 442 ScrollDirection*,
447 ScrollGranularity*); 443 ScrollGranularity*);
448 444
449 // Called by a full frame plugin inside this view to inform it that its 445 // Called by a full frame plugin inside this view to inform it that its
450 // zoom level has been updated. The plugin should only call this function 446 // zoom level has been updated. The plugin should only call this function
451 // if the zoom change was triggered by the browser, it's only needed in case 447 // if the zoom change was triggered by the browser, it's only needed in case
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 WebString inputModeOfFocusedElement(); 555 WebString inputModeOfFocusedElement();
560 556
561 // Returns true if the event was actually processed. 557 // Returns true if the event was actually processed.
562 bool keyEventDefault(const WebKeyboardEvent&); 558 bool keyEventDefault(const WebKeyboardEvent&);
563 559
564 bool confirmComposition(const WebString& text, ConfirmCompositionBehavior); 560 bool confirmComposition(const WebString& text, ConfirmCompositionBehavior);
565 561
566 // Returns true if the view was scrolled. 562 // Returns true if the view was scrolled.
567 bool scrollViewWithKeyboard(int keyCode, int modifiers); 563 bool scrollViewWithKeyboard(int keyCode, int modifiers);
568 564
569 void hideSelectPopup();
570
571 // Converts |pos| from window coordinates to contents coordinates and gets 565 // Converts |pos| from window coordinates to contents coordinates and gets
572 // the HitTestResult for it. 566 // the HitTestResult for it.
573 HitTestResult hitTestResultForWindowPos(const IntPoint&); 567 HitTestResult hitTestResultForWindowPos(const IntPoint&);
574 568
575 // Consolidate some common code between starting a drag over a target and 569 // Consolidate some common code between starting a drag over a target and
576 // updating a drag over a target. If we're starting a drag, |isEntering| 570 // updating a drag over a target. If we're starting a drag, |isEntering|
577 // should be true. 571 // should be true.
578 WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint, 572 WebDragOperation dragTargetDragEnterOrOver(const WebPoint& clientPoint,
579 const WebPoint& screenPoint, 573 const WebPoint& screenPoint,
580 DragAction, 574 DragAction,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 bool m_imeAcceptEvents; 684 bool m_imeAcceptEvents;
691 685
692 // The available drag operations (copy, move link...) allowed by the source. 686 // The available drag operations (copy, move link...) allowed by the source.
693 WebDragOperation m_operationsAllowed; 687 WebDragOperation m_operationsAllowed;
694 688
695 // The current drag operation as negotiated by the source and destination. 689 // The current drag operation as negotiated by the source and destination.
696 // When not equal to DragOperationNone, the drag data can be dropped onto th e 690 // When not equal to DragOperationNone, the drag data can be dropped onto th e
697 // current drop target in this WebView (the drop target can accept the drop) . 691 // current drop target in this WebView (the drop target can accept the drop) .
698 WebDragOperation m_dragOperation; 692 WebDragOperation m_dragOperation;
699 693
700 // The popup associated with a select element.
701 RefPtrWillBePersistent<PopupContainer> m_selectPopup;
702
703 // The popup associated with an input element. 694 // The popup associated with an input element.
704 RefPtr<WebPagePopupImpl> m_pagePopup; 695 RefPtr<WebPagePopupImpl> m_pagePopup;
705 696
706 OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent; 697 OwnPtr<WebDevToolsAgentPrivate> m_devToolsAgent;
707 OwnPtr<PageOverlayList> m_pageOverlays; 698 OwnPtr<PageOverlayList> m_pageOverlays;
708 699
709 // Whether the webview is rendering transparently. 700 // Whether the webview is rendering transparently.
710 bool m_isTransparent; 701 bool m_isTransparent;
711 702
712 // Whether the user can press tab to focus links. 703 // Whether the user can press tab to focus links.
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 }; 752 };
762 753
763 DEFINE_TYPE_CASTS(WebViewImpl, WebWidget, widget, widget->isWebView(), widget.is WebView()); 754 DEFINE_TYPE_CASTS(WebViewImpl, WebWidget, widget, widget->isWebView(), widget.is WebView());
764 // We have no ways to check if the specified WebView is an instance of 755 // We have no ways to check if the specified WebView is an instance of
765 // WebViewImpl because WebViewImpl is the only implementation of WebView. 756 // WebViewImpl because WebViewImpl is the only implementation of WebView.
766 DEFINE_TYPE_CASTS(WebViewImpl, WebView, webView, true, true); 757 DEFINE_TYPE_CASTS(WebViewImpl, WebView, webView, true, true);
767 758
768 } // namespace blink 759 } // namespace blink
769 760
770 #endif 761 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698