summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 00:23:48 +0000
committermaf@chromium.org <maf@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-22 00:23:48 +0000
commitd36ccf511ffb7b57f004acf56f87c318602502a5 (patch)
treedc7b1308a62bf0a31d1f27814e8211e2c7b7db72
parent2f7af7b541d4fc0721e755e541e17d82404a6791 (diff)
downloadchromium_src-d36ccf511ffb7b57f004acf56f87c318602502a5.zip
chromium_src-d36ccf511ffb7b57f004acf56f87c318602502a5.tar.gz
chromium_src-d36ccf511ffb7b57f004acf56f87c318602502a5.tar.bz2
Fix bug where dragged Javascript URLs get over-filtered and end up nameless.
BUG=86643 Review URL: http://codereview.chromium.org/7204045 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@89943 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/render_view_host.cc5
-rw-r--r--content/browser/renderer_host/render_view_host_unittest.cc7
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.