diff options
-rw-r--r-- | content/browser/renderer_host/render_view_host.cc | 5 | ||||
-rw-r--r-- | content/browser/renderer_host/render_view_host_unittest.cc | 7 |
2 files changed, 11 insertions, 1 deletions
diff --git a/content/browser/renderer_host/render_view_host.cc b/content/browser/renderer_host/render_view_host.cc index f5aa764..e7e885d 100644 --- a/content/browser/renderer_host/render_view_host.cc +++ b/content/browser/renderer_host/render_view_host.cc @@ -1021,7 +1021,10 @@ void RenderViewHost::OnMsgStartDragging( ChildProcessSecurityPolicy* policy = ChildProcessSecurityPolicy::GetInstance(); - FilterURL(policy, process()->id(), &drag_url); + + // Allow drag of Javascript URLs to enable bookmarklet drag to bookmark bar. + if (!drag_url.SchemeIs(chrome::kJavaScriptScheme)) + FilterURL(policy, process()->id(), &drag_url); FilterURL(policy, process()->id(), &html_base_url); if (drag_url != drop_data.url || html_base_url != drop_data.html_base_url) { diff --git a/content/browser/renderer_host/render_view_host_unittest.cc b/content/browser/renderer_host/render_view_host_unittest.cc index 0d6fb87..0838606 100644 --- a/content/browser/renderer_host/render_view_host_unittest.cc +++ b/content/browser/renderer_host/render_view_host_unittest.cc @@ -146,6 +146,13 @@ TEST_F(RenderViewHostTest, StartDragging) { rvh()->TestOnMsgStartDragging(drop_data); EXPECT_EQ(https_url, view_delegate.drag_url()); EXPECT_EQ(https_url, view_delegate.html_base_url()); + + GURL javascript_url = GURL("javascript:alert('I am a bookmarklet')"); + drop_data.url = javascript_url; + drop_data.html_base_url = http_url; + rvh()->TestOnMsgStartDragging(drop_data); + EXPECT_EQ(javascript_url, view_delegate.drag_url()); + EXPECT_EQ(http_url, view_delegate.html_base_url()); } // The test that follow trigger DCHECKS in debug build. |