Skip to content

Commit

Permalink
Revert "Add RenderFrameHost as parameter to WebContentsDelegate::Hand…
Browse files Browse the repository at this point in the history
…leContextMenu"

This reverts commit 5705b91.

Reason for revert: Suspect this caused a failure in content_unittests on Android CFI: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Android%20CFI/4518

Original change's description:
> Add RenderFrameHost as parameter to WebContentsDelegate::HandleContextMenu
> 
> To be able to do anything more complicated than block all context
> menu handling in HandleContextMenu you need the associated WebContents
> object. Current implementation that do something more currently handles
> that by either being a WebContentsObserver or keeping the WebContents
> object some other way.
> 
> After WebContents checks WebContentsDelegate::HandleContextMenu the
> next delegate to get a chance is WebContentsViewDelegate::ShowContextMenu
> which takes a RenderFrameHost as additional parameter. This is all
> you need to get the WebContents object and other related information.
> 
> So, to simplify writing WebContentsDelegate:s and override the
> context menu handling by actually showing something, include
> RenderFrameHost also in the HandleContextMenu call.
> 
> I selected RenderFrameHost instead of WebContents that many
> other delegate methods use because it matches ShowContextMenu
> signature and there are already other delegate methods that
> also uses RenderFrameHost instead.
> 
> WebContentsDelegate is a very popular interface, so this
> modifies a lot of files in different components but the
> changes are mechanical.
> 
> Change-Id: I612202730f9a3badd38062e8284f1d50979e9377
> Bug: 932520
> Reviewed-on: https://chromium-review.googlesource.com/c/1472696
> Reviewed-by: Elly Fong-Jones <ellyjones@chromium.org>
> Reviewed-by: Jochen Eisinger <jochen@chromium.org>
> Commit-Queue: Joel Klinghed <the_jk@opera.com>
> Cr-Commit-Position: refs/heads/master@{#633300}

TBR=ellyjones@chromium.org,the_jk@opera.com,jochen@chromium.org

Change-Id: I2c23108bebf04fb9248ad799f6e8e3917a93536b
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 932520
Reviewed-on: https://chromium-review.googlesource.com/c/1478184
Reviewed-by: Dirk Pranke <dpranke@chromium.org>
Commit-Queue: Dirk Pranke <dpranke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#633454}
  • Loading branch information
dpranke authored and Commit Bot committed Feb 19, 2019
1 parent 16fe7d8 commit 328cae2
Show file tree
Hide file tree
Showing 41 changed files with 33 additions and 94 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,6 @@ views::View* AccessibilityPanel::GetContentsView() {
}

bool AccessibilityPanel::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Eat all requests as context menus are disallowed.
return true;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/accessibility/accessibility_panel.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,7 @@ class AccessibilityPanel : public views::WidgetDelegate,
class AccessibilityPanelWebContentsObserver;

// content::WebContentsDelegate:
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;

// Indirectly invoked by the component extension.
void DidFirstVisuallyNonEmptyPaint();
Expand Down
1 change: 0 additions & 1 deletion chrome/browser/chromeos/first_run/first_run_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ content::WebContents* FirstRunView::GetWebContents() {
}

bool FirstRunView::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Discards context menu.
return true;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/first_run/first_run_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,7 @@ class FirstRunView : public views::View,

private:
// Overriden from content::WebContentsDelegate.
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/hats/hats_dialog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -190,8 +190,7 @@ bool HatsDialog::ShouldShowDialogTitle() const {
return false;
}

bool HatsDialog::HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
bool HatsDialog::HandleContextMenu(const content::ContextMenuParams& params) {
// Disable context menu.
return true;
}
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/hats/hats_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,7 @@ class HatsDialog : public ui::WebDialogDelegate {
void OnCloseContents(content::WebContents* source,
bool* out_close_dialog) override;
bool ShouldShowDialogTitle() const override;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;

std::string html_data_;

Expand Down
1 change: 0 additions & 1 deletion chrome/browser/chromeos/login/ui/login_web_dialog.cc
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@ bool LoginWebDialog::ShouldShowDialogTitle() const {
}

bool LoginWebDialog::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Disable context menu.
return true;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/login/ui/login_web_dialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,7 @@ class LoginWebDialog : public ui::WebDialogDelegate {
void OnCloseContents(content::WebContents* source,
bool* out_close_dialog) override;
bool ShouldShowDialogTitle() const override;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
bool HandleOpenURLFromTab(content::WebContents* source,
const content::OpenURLParams& params,
content::WebContents** out_new_contents) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -408,7 +408,6 @@ bool OobeUIDialogDelegate::ShouldShowDialogTitle() const {
}

bool OobeUIDialogDelegate::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
return true;
}
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/login/ui/oobe_ui_dialog_delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,7 @@ class OobeUIDialogDelegate : public display::DisplayObserver,
void OnCloseContents(content::WebContents* source,
bool* out_close_dialog) override;
bool ShouldShowDialogTitle() const override;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
std::vector<ui::Accelerator> GetAccelerators() override;
bool AcceleratorPressed(const ui::Accelerator& accelerator) override;

Expand Down
1 change: 0 additions & 1 deletion chrome/browser/chromeos/login/ui/webui_login_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -420,7 +420,6 @@ void WebUILoginView::OnKeyboardVisibilityChanged(bool visible) {
// WebUILoginView private: -----------------------------------------------------

bool WebUILoginView::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
#ifndef NDEBUG
// Do not show the context menu.
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/chromeos/login/ui/webui_login_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,8 +149,7 @@ class WebUILoginView : public views::View,
void OnKeyboardVisibilityChanged(bool visible) override;

// Overridden from content::WebContentsDelegate.
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
bool HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override;
Expand Down
4 changes: 1 addition & 3 deletions chrome/browser/media/offscreen_tab.cc
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,7 @@ void OffscreenTab::CanDownload(
callback.Run(false);
}

bool OffscreenTab::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
bool OffscreenTab::HandleContextMenu(const content::ContextMenuParams& params) {
// Context menus should never be shown. Do nothing, but indicate the context
// menu was shown so that default implementation in libcontent does not
// attempt to do so on its own.
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/media/offscreen_tab.h
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,7 @@ class OffscreenTab : protected content::WebContentsDelegate,
void CanDownload(const GURL& url,
const std::string& request_method,
const base::RepeatingCallback<void(bool)>& callback) final;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) final;
bool HandleContextMenu(const content::ContextMenuParams& params) final;
content::KeyboardEventProcessingResult PreHandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) final;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,8 +296,7 @@ class CredentialProviderWebDialogDelegate : public ui::WebDialogDelegate {
void OnCloseContents(content::WebContents* source,
bool* out_close_dialog) override {}

bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override {
bool HandleContextMenu(const content::ContextMenuParams& params) override {
return true;
}

Expand Down
1 change: 0 additions & 1 deletion chrome/browser/ui/user_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ UserManagerProfileDialog::BaseDialogDelegate::BaseDialogDelegate()
: guest_web_contents_(nullptr) {}

bool UserManagerProfileDialog::BaseDialogDelegate::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Ignores context menu.
return true;
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/ui/user_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,7 @@ class UserManagerProfileDialog {
BaseDialogDelegate();

// content::WebContentsDelegate:
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;

// content::WebContentsDelegate:
void LoadingStateChanged(content::WebContents* source,
Expand Down
1 change: 0 additions & 1 deletion chrome/browser/ui/views/profiles/profile_chooser_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -611,7 +611,6 @@ base::string16 ProfileChooserView::GetAccessibleWindowTitle() const {
}

bool ProfileChooserView::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Suppresses the context menu because some features, such as inspecting
// elements, are not appropriate in a bubble.
Expand Down
3 changes: 1 addition & 2 deletions chrome/browser/ui/views/profiles/profile_chooser_view.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ class ProfileChooserView : public content::WebContentsDelegate,
base::string16 GetAccessibleWindowTitle() const override;

// content::WebContentsDelegate:
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;

// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,6 @@ bool SigninViewControllerDelegateViews::HandleKeyboardEvent(
}

bool SigninViewControllerDelegateViews::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
// Discard the context menu
return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,7 @@ class SigninViewControllerDelegateViews
content::WebContents* GetWebContents() override;

// content::WebContentsDelegate:
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;
bool HandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) override;
Expand Down
4 changes: 1 addition & 3 deletions chrome/browser/ui/webui/set_as_default_browser_ui_win.cc
Original file line number Diff line number Diff line change
Expand Up @@ -219,8 +219,7 @@ class SetAsDefaultBrowserDialogImpl : public ui::WebDialogDelegate,
void OnDialogClosed(const std::string& json_retval) override;
void OnCloseContents(WebContents* source, bool* out_close_dialog) override;
bool ShouldShowDialogTitle() const override;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override;
bool HandleContextMenu(const content::ContextMenuParams& params) override;

// Overridden from ResponseDelegate:
void SetDialogInteractionResult(MakeChromeDefaultResult result) override;
Expand Down Expand Up @@ -348,7 +347,6 @@ bool SetAsDefaultBrowserDialogImpl::ShouldShowDialogTitle() const {
}

bool SetAsDefaultBrowserDialogImpl::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
return true;
}
Expand Down
3 changes: 1 addition & 2 deletions content/browser/site_per_process_hit_test_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4983,8 +4983,7 @@ class ContextMenuObserverDelegate : public WebContentsDelegate {

~ContextMenuObserverDelegate() override {}

bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) override {
bool HandleContextMenu(const content::ContextMenuParams& params) override {
context_menu_created_ = true;
menu_params_ = params;
message_loop_runner_->Quit();
Expand Down
3 changes: 1 addition & 2 deletions content/browser/web_contents/web_contents_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -5257,8 +5257,7 @@ void WebContentsImpl::ShowContextMenu(RenderFrameHost* render_frame_host,

ContextMenuParams context_menu_params(params);
// Allow WebContentsDelegates to handle the context menu operation first.
if (delegate_ &&
delegate_->HandleContextMenu(render_frame_host, context_menu_params))
if (delegate_ && delegate_->HandleContextMenu(context_menu_params))
return;

render_view_host_delegate_view_->ShowContextMenu(render_frame_host,
Expand Down
23 changes: 0 additions & 23 deletions content/browser/web_contents/web_contents_impl_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3364,27 +3364,4 @@ TEST_F(WebContentsImplTest, DidFirstVisuallyNonEmptyPaint) {
EXPECT_TRUE(observer.observed_did_first_visually_non_empty_paint());
}

namespace {

class MockWebContentsDelegate : public WebContentsDelegate {
public:
MOCK_METHOD2(HandleContextMenu,
bool(RenderFrameHost*, const ContextMenuParams&));
};

} // namespace

TEST_F(WebContentsImplTest, HandleContextMenuDelegate) {
MockWebContentsDelegate delegate;
contents()->SetDelegate(&delegate);

RenderFrameHost* rfh = main_test_rfh();
EXPECT_CALL(delegate, HandleContextMenu(rfh, ::testing::_));

ContextMenuParams params;
contents()->ShowContextMenu(rfh, params);

contents()->SetDelegate(nullptr);
}

} // namespace content
1 change: 0 additions & 1 deletion content/browser/web_contents/web_contents_view_android.cc
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,6 @@ void WebContentsViewAndroid::ShowContextMenu(
RenderFrameHost* render_frame_host, const ContextMenuParams& params) {
auto* rwhv = static_cast<RenderWidgetHostViewAndroid*>(
web_contents_->GetRenderWidgetHostView());

// See if context menu is handled by SelectionController as a selection menu.
// If not, use the delegate to show it.
if (rwhv && rwhv->ShowSelectionMenu(params))
Expand Down
6 changes: 6 additions & 0 deletions content/browser/web_contents/web_contents_view_mac.mm
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,12 @@
void WebContentsViewMac::ShowContextMenu(
RenderFrameHost* render_frame_host,
const ContextMenuParams& params) {
// Allow delegates to handle the context menu operation first.
if (web_contents_->GetDelegate() &&
web_contents_->GetDelegate()->HandleContextMenu(params)) {
return;
}

if (delegate())
delegate()->ShowContextMenu(render_frame_host, params);
else
Expand Down
3 changes: 1 addition & 2 deletions content/public/browser/web_contents_delegate.cc
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ void WebContentsDelegate::CanDownload(
callback.Run(true);
}

bool WebContentsDelegate::HandleContextMenu(RenderFrameHost* render_frame_host,
const ContextMenuParams& params) {
bool WebContentsDelegate::HandleContextMenu(const ContextMenuParams& params) {
return false;
}

Expand Down
3 changes: 1 addition & 2 deletions content/public/browser/web_contents_delegate.h
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,7 @@ class CONTENT_EXPORT WebContentsDelegate {
const base::Callback<void(bool)>& callback);

// Returns true if the context menu operation was handled by the delegate.
virtual bool HandleContextMenu(RenderFrameHost* render_frame_host,
const ContextMenuParams& params);
virtual bool HandleContextMenu(const ContextMenuParams& params);

// Allows delegates to handle keyboard events before sending to the renderer.
// See enum for description of return values.
Expand Down
4 changes: 1 addition & 3 deletions extensions/browser/guest_view/app_view/app_view_guest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -117,9 +117,7 @@ AppViewGuest::AppViewGuest(WebContents* owner_web_contents)
AppViewGuest::~AppViewGuest() {
}

bool AppViewGuest::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
bool AppViewGuest::HandleContextMenu(const content::ContextMenuParams& params) {
if (app_view_guest_delegate_) {
return app_view_guest_delegate_->HandleContextMenu(web_contents(), params);
}
Expand Down
3 changes: 1 addition & 2 deletions extensions/browser/guest_view/app_view/app_view_guest.h
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@ class AppViewGuest : public guest_view::GuestView<AppViewGuest> {
int GetTaskPrefix() const final;

// content::WebContentsDelegate implementation.
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) final;
bool HandleContextMenu(const content::ContextMenuParams& params) final;
void RequestMediaAccessPermission(
content::WebContents* web_contents,
const content::MediaStreamRequest& request,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,6 @@ void ExtensionOptionsGuest::CloseContents(WebContents* source) {
}

bool ExtensionOptionsGuest::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
if (!extension_options_guest_delegate_)
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,7 @@ class ExtensionOptionsGuest
content::WebContents* source,
const content::OpenURLParams& params) final;
void CloseContents(content::WebContents* source) final;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) final;
bool HandleContextMenu(const content::ContextMenuParams& params) final;
bool ShouldCreateWebContents(
content::WebContents* web_contents,
content::RenderFrameHost* opener,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,6 @@ void MimeHandlerViewGuest::NavigationStateChanged(
}

bool MimeHandlerViewGuest::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
return delegate_ && delegate_->HandleContextMenu(web_contents(), params);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,7 @@ class MimeHandlerViewGuest
const content::OpenURLParams& params) final;
void NavigationStateChanged(content::WebContents* source,
content::InvalidateTypes changed_flags) final;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) final;
bool HandleContextMenu(const content::ContextMenuParams& params) final;
bool PreHandleGestureEvent(content::WebContents* source,
const blink::WebGestureEvent& event) final;
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
Expand Down
1 change: 0 additions & 1 deletion extensions/browser/guest_view/web_view/web_view_guest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,6 @@ ZoomController::ZoomMode WebViewGuest::GetZoomMode() {
}

bool WebViewGuest::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
return web_view_guest_delegate_ &&
web_view_guest_delegate_->HandleContextMenu(params);
Expand Down
3 changes: 1 addition & 2 deletions extensions/browser/guest_view/web_view/web_view_guest.h
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,7 @@ class WebViewGuest : public guest_view::GuestView<WebViewGuest> {
int32_t line_no,
const base::string16& source_id) final;
void CloseContents(content::WebContents* source) final;
bool HandleContextMenu(content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) final;
bool HandleContextMenu(const content::ContextMenuParams& params) final;
bool HandleKeyboardEvent(content::WebContents* source,
const content::NativeWebKeyboardEvent& event) final;
void LoadProgressChanged(content::WebContents* source, double progress) final;
Expand Down
6 changes: 2 additions & 4 deletions ui/views/controls/webview/web_dialog_view.cc
Original file line number Diff line number Diff line change
Expand Up @@ -268,12 +268,10 @@ bool WebDialogView::ShouldShowDialogTitle() const {
}

bool WebDialogView::HandleContextMenu(
content::RenderFrameHost* render_frame_host,
const content::ContextMenuParams& params) {
if (delegate_)
return delegate_->HandleContextMenu(render_frame_host, params);
return WebDialogWebContentsDelegate::HandleContextMenu(render_frame_host,
params);
return delegate_->HandleContextMenu(params);
return WebDialogWebContentsDelegate::HandleContextMenu(params);
}

////////////////////////////////////////////////////////////////////////////////
Expand Down
Loading

0 comments on commit 328cae2

Please sign in to comment.