From 026dacda761e5e54416531a6bd478e9d2a9a666a Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Wed, 19 Oct 2011 16:37:31 +0000 Subject: [PATCH] Add CefBrowserSettings.load_drops_disabled option for disabling default navigation resulting from drag & drop of URLs (issue #363). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@327 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- include/internal/cef_types.h | 5 +++++ include/internal/cef_types_wrappers.h | 1 + libcef/browser_drag_delegate_win.cc | 12 ++++++------ libcef/browser_webview_delegate.cc | 4 ++++ libcef/browser_webview_delegate.h | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index b84733a06..75ed4a38f 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -170,6 +170,11 @@ typedef struct _cef_browser_settings_t /// bool drag_drop_disabled; + /// + // Disable default navigation resulting from drag & drop of URLs. + /// + bool load_drops_disabled; + // The below values map to WebPreferences settings. /// diff --git a/include/internal/cef_types_wrappers.h b/include/internal/cef_types_wrappers.h index c07dbbc5c..f8533903d 100644 --- a/include/internal/cef_types_wrappers.h +++ b/include/internal/cef_types_wrappers.h @@ -313,6 +313,7 @@ struct CefBrowserSettingsTraits { static inline void set(const struct_type* src, struct_type* target, bool copy) { target->drag_drop_disabled = src->drag_drop_disabled; + target->load_drops_disabled = src->load_drops_disabled; cef_string_set(src->standard_font_family.str, src->standard_font_family.length, &target->standard_font_family, copy); diff --git a/libcef/browser_drag_delegate_win.cc b/libcef/browser_drag_delegate_win.cc index 375b848b7..2597b7aba 100644 --- a/libcef/browser_drag_delegate_win.cc +++ b/libcef/browser_drag_delegate_win.cc @@ -248,7 +248,7 @@ void BrowserDragDelegate::PrepareDragForFileContents( } void BrowserDragDelegate::PrepareDragForUrl(const WebDropData& drop_data, - ui::OSExchangeData* data) { + ui::OSExchangeData* data) { if (drop_data.url.SchemeIs("javascript")) { // We don't want to allow javascript URLs to be dragged to the desktop. } else { @@ -257,11 +257,11 @@ void BrowserDragDelegate::PrepareDragForUrl(const WebDropData& drop_data, } void BrowserDragDelegate::DoDragging(const WebDropData& drop_data, - WebDragOperationsMask ops, - const GURL& page_url, - const std::string& page_encoding, - const SkBitmap& image, - const gfx::Point& image_offset) { + WebDragOperationsMask ops, + const GURL& page_url, + const std::string& page_encoding, + const SkBitmap& image, + const gfx::Point& image_offset) { ui::OSExchangeData data; if (!drop_data.download_metadata.empty()) { diff --git a/libcef/browser_webview_delegate.cc b/libcef/browser_webview_delegate.cc index 3d54d23e0..350524d16 100644 --- a/libcef/browser_webview_delegate.cc +++ b/libcef/browser_webview_delegate.cc @@ -441,6 +441,10 @@ void BrowserWebViewDelegate::setToolTipText( GetWidgetHost()->SetTooltipText(tooltipStr); } +bool BrowserWebViewDelegate::acceptsLoadDrops() { + return !browser_->settings().load_drops_disabled; +} + void BrowserWebViewDelegate::focusNext() { CefRefPtr client = browser_->GetClient(); if (client.get()) { diff --git a/libcef/browser_webview_delegate.h b/libcef/browser_webview_delegate.h index 0736bfad0..718fbc064 100644 --- a/libcef/browser_webview_delegate.h +++ b/libcef/browser_webview_delegate.h @@ -109,7 +109,7 @@ class BrowserWebViewDelegate : public WebKit::WebViewClient, WebKit::WebDragOperationsMask mask, const WebKit::WebImage& image, const WebKit::WebPoint& image_offset) OVERRIDE; - virtual bool acceptsLoadDrops() OVERRIDE { return true; } + virtual bool acceptsLoadDrops() OVERRIDE; virtual void focusNext() OVERRIDE; virtual void focusPrevious() OVERRIDE; virtual void focusedNodeChanged(const WebKit::WebNode& node) OVERRIDE;