From 5640b90777c362df2921b12b314cbe50b0016310 Mon Sep 17 00:00:00 2001 From: "tc@google.com" Date: Wed, 10 Dec 2008 01:32:21 +0000 Subject: Fix a crash in the copy selection code. If there's no selection, we get a null range, so check for it. Also fallback if there's no frame with focus to the main frame. The webkit gtk code does this as well. Review URL: http://codereview.chromium.org/13297 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6681 0039d316-1c4b-4281-b951-d872f2087c98 --- webkit/glue/webframe_impl.cc | 3 +++ webkit/tools/test_shell/test_webview_delegate_gtk.cc | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/webkit/glue/webframe_impl.cc b/webkit/glue/webframe_impl.cc index a3d003b..bdb43b4 100644 --- a/webkit/glue/webframe_impl.cc +++ b/webkit/glue/webframe_impl.cc @@ -1351,6 +1351,9 @@ void WebFrameImpl::ClearSelection() { std::string WebFrameImpl::GetSelection(bool as_html) { RefPtr range = frame()->selection()->toRange(); + if (!range.get()) + return std::string(); + if (as_html) { String markup = WebCore::createMarkup(range.get(), 0); return webkit_glue::StringToStdString(markup); diff --git a/webkit/tools/test_shell/test_webview_delegate_gtk.cc b/webkit/tools/test_shell/test_webview_delegate_gtk.cc index 3866e3d..3b0bf82 100644 --- a/webkit/tools/test_shell/test_webview_delegate_gtk.cc +++ b/webkit/tools/test_shell/test_webview_delegate_gtk.cc @@ -47,6 +47,10 @@ void SelectionClipboardGetContents(GtkClipboard* clipboard, WebView* webview = static_cast(data); WebFrame* frame = webview->GetFocusedFrame(); + if (!frame) + frame = webview->GetMainFrame(); + DCHECK(frame); + std::string selection = frame->GetSelection(TEXT_HTML == info); if (TEXT_HTML == info) { gtk_selection_data_set(selection_data, -- cgit v1.1