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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura.cc

Issue 1602903003: Display the context menu on Windows on long press release (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address review comments Created 4 years, 11 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <set> 7 #include <set>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 2702 matching lines...) Expand 10 before | Expand all | Expand 10 after
2713 snapped = window_->GetRootWindow(); 2713 snapped = window_->GetRootWindow();
2714 } else { 2714 } else {
2715 snapped = window_->GetToplevelWindow(); 2715 snapped = window_->GetToplevelWindow();
2716 } 2716 }
2717 if (snapped && snapped != window_) 2717 if (snapped && snapped != window_)
2718 ui::SnapLayerToPhysicalPixelBoundary(snapped->layer(), window_->layer()); 2718 ui::SnapLayerToPhysicalPixelBoundary(snapped->layer(), window_->layer());
2719 2719
2720 has_snapped_to_boundary_ = true; 2720 has_snapped_to_boundary_ = true;
2721 } 2721 }
2722 2722
2723 void RenderWidgetHostViewAura::OnShowContextMenu() { 2723 bool RenderWidgetHostViewAura::OnShowContextMenu(
2724 const ContextMenuParams& params) {
2724 #if defined(OS_WIN) 2725 #if defined(OS_WIN)
2726 last_context_menu_params_.reset();
2727
2728 if (params.source_type == ui::MENU_SOURCE_TOUCH) {
2729 last_context_menu_params_.reset(new ContextMenuParams);
2730 *last_context_menu_params_ = params;
2731 return false;
2732 }
2725 showing_context_menu_ = true; 2733 showing_context_menu_ = true;
2726 #endif 2734 #endif
2735 return true;
2727 } 2736 }
2728 2737
2729 void RenderWidgetHostViewAura::SetSelectionControllerClientForTest( 2738 void RenderWidgetHostViewAura::SetSelectionControllerClientForTest(
2730 scoped_ptr<TouchSelectionControllerClientAura> client) { 2739 scoped_ptr<TouchSelectionControllerClientAura> client) {
2731 selection_controller_client_.swap(client); 2740 selection_controller_client_.swap(client);
2732 CreateSelectionController(); 2741 CreateSelectionController();
2733 } 2742 }
2734 2743
2735 void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) { 2744 void RenderWidgetHostViewAura::InternalSetBounds(const gfx::Rect& rect) {
2736 SnapToPhysicalPixelBoundary(); 2745 SnapToPhysicalPixelBoundary();
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
2924 event->SetHandled(); 2933 event->SetHandled();
2925 } 2934 }
2926 break; 2935 break;
2927 case ui::ET_GESTURE_TAP: 2936 case ui::ET_GESTURE_TAP:
2928 if (selection_controller_->WillHandleTapEvent( 2937 if (selection_controller_->WillHandleTapEvent(
2929 event->location_f(), event->details().tap_count())) { 2938 event->location_f(), event->details().tap_count())) {
2930 event->SetHandled(); 2939 event->SetHandled();
2931 } 2940 }
2932 break; 2941 break;
2933 case ui::ET_GESTURE_SCROLL_BEGIN: 2942 case ui::ET_GESTURE_SCROLL_BEGIN:
2934 selection_controller_->OnScrollBeginEvent();
2935 selection_controller_client_->OnScrollStarted(); 2943 selection_controller_client_->OnScrollStarted();
2936 break; 2944 break;
2937 case ui::ET_GESTURE_SCROLL_END: 2945 case ui::ET_GESTURE_SCROLL_END:
2938 selection_controller_client_->OnScrollCompleted(); 2946 selection_controller_client_->OnScrollCompleted();
2939 break; 2947 break;
2948 #if defined(OS_WIN)
2949 case ui::ET_GESTURE_LONG_TAP: {
2950 if (!last_context_menu_params_)
2951 break;
2952
2953 scoped_ptr<ContextMenuParams> context_menu_params =
2954 std::move(last_context_menu_params_);
2955
2956 // On Windows we want to display the context menu when the long press
2957 // gesture is released. To achieve that, we switch the saved context
2958 // menu params source type to MENU_SOURCE_MOUSE. This is to ensure that
2959 // the RenderWidgetHostViewAura::OnShowContextMenu function which is
2960 // called from the ShowContextMenu call below, does not treat it as
2961 // a context menu request coming in from touch.
2962 DCHECK(context_menu_params->source_type == ui::MENU_SOURCE_TOUCH);
2963 context_menu_params->source_type = ui::MENU_SOURCE_MOUSE;
2964
2965 RenderViewHostDelegateView* delegate_view =
2966 GetRenderViewHostDelegateView();
2967 if (delegate_view)
2968 delegate_view->ShowContextMenu(GetFocusedFrame(),
2969 *context_menu_params);
2970
2971 event->SetHandled();
2972 // WARNING: we may have been deleted during the call to ShowContextMenu().
2973 break;
2974 }
2975 #endif
2940 default: 2976 default:
2941 break; 2977 break;
2942 } 2978 }
2943 } 2979 }
2944 2980
2981 RenderViewHostDelegateView*
2982 RenderWidgetHostViewAura::GetRenderViewHostDelegateView() {
2983 // Use RenderViewHostDelegate to get to the WebContentsViewAura, which will
2984 // actually show the disambiguation popup.
2985 RenderViewHost* rvh = RenderViewHost::From(host_);
2986 if (!rvh)
2987 return nullptr;
2988
2989 RenderViewHostDelegate* delegate = rvh->GetDelegate();
2990 if (!delegate)
2991 return nullptr;
2992
2993 return delegate->GetDelegateView();
2994 }
2995
2945 //////////////////////////////////////////////////////////////////////////////// 2996 ////////////////////////////////////////////////////////////////////////////////
2946 // DelegatedFrameHost, public: 2997 // DelegatedFrameHost, public:
2947 2998
2948 ui::Layer* RenderWidgetHostViewAura::DelegatedFrameHostGetLayer() const { 2999 ui::Layer* RenderWidgetHostViewAura::DelegatedFrameHostGetLayer() const {
2949 return window_->layer(); 3000 return window_->layer();
2950 } 3001 }
2951 3002
2952 bool RenderWidgetHostViewAura::DelegatedFrameHostIsVisible() const { 3003 bool RenderWidgetHostViewAura::DelegatedFrameHostIsVisible() const {
2953 return !host_->is_hidden(); 3004 return !host_->is_hidden();
2954 } 3005 }
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
3029 3080
3030 //////////////////////////////////////////////////////////////////////////////// 3081 ////////////////////////////////////////////////////////////////////////////////
3031 // RenderWidgetHostViewBase, public: 3082 // RenderWidgetHostViewBase, public:
3032 3083
3033 // static 3084 // static
3034 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) { 3085 void RenderWidgetHostViewBase::GetDefaultScreenInfo(WebScreenInfo* results) {
3035 GetScreenInfoForWindow(results, NULL); 3086 GetScreenInfoForWindow(results, NULL);
3036 } 3087 }
3037 3088
3038 } // namespace content 3089 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698